#azure #azure-service-fabric #azure-application-insights
#azure #azure-service-fabric #azure-application-insights
Вопрос:
Я пытаюсь получить более удобное для пользователя имя компонента в карте приложений Application Insights. Я нашел примеры, но не специально для Service Fabric.
Как интегрировать это с FabricTelemetryInitializer, который является частью Kestrel WebHostBuilder?
Ответ №1:
Если вы не используете пакет nuget Application Insights Service Fabric, вам следует использовать его для настройки своей облачной роли. https://www.nuget.org/packages/Microsoft.Права приложения.ServiceFabric
https://www.nuget.org/packages/Microsoft.Права приложения.ServiceFabric.Native
Майкрософт.Права приложения.ServiceFabric.Native следует использовать, если в вашем приложении есть ссылки на среду выполнения service fabric, поскольку эта библиотека имеет отношение к таким концепциям, как ServiceContext, удаленное управление службами и т.д. Майкрософт.Права приложения.ServiceFabric следует использовать, если ваше приложение выполняется в service fabric, но не имеет ссылки на среду выполнения service fabric.
Поскольку вы упомянули FabricTelemetryInitializer, я предполагаю, что вы уже используете эти пакеты nuget. Вы можете увидеть, как можно подключить FabricyTelemetryInitializer здесь: https://github.com/microsoft/applicationinsights-servicefabric#net-core-1
Если у вас нет объекта контекста сервиса, не передавайте его конструктору, и FabricTelemetryInitializer будет просто полагаться на переменные среды.
Фактическую логику смотрите здесь: https://github.com/Microsoft/ApplicationInsights-ServiceFabric/blob/master/src/ApplicationInsights.ServiceFabric/Shared/fabrict-metryinitializer.cs#L81
Ответ №2:
Я думаю, вы можете использовать этот код:
[DebuggerStepThrough]
public class ServiceNameInitializer : ITelemetryInitializer
{
/// <inheritdoc />
public void Initialize(ITelemetry telemetry)
{
telemetry.Context.Cloud.RoleName = "ServiceA";
}
}
И в ConfigureServices
добавить:
services.AddSingleton<ITelemetryInitializer, ServiceNameInitializer>();