Как установить Cloud_RoleName в Service Fabric - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь получить более понятное имя компонента в Application Insights Application Map. Я нашел примеры, но не для Service Fabric специально.

Как вы интегрируете это с FabricTelemetryInitializer, который является частью Kestrel WebHostBuilder?

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Если вы не используете пакет Nuget Service Insights Service Fabric, вы должны использовать его для установки своей облачной роли.https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric.Native

Microsoft.ApplicationInsights.ServiceFabric.Native следует использовать, если ваше приложение имеет ссылки на среду выполнения Service Fabric, поскольку эта библиотека относится к таким понятиям, как ServiceContext, Service Remoting и т. Д. Microsoft.ApplicationInsights.ServiceFabric следует использовать, если ваше приложение выполняется в сервисной фабрике, но не имеет ссылки на среду выполнения сервисной фабрики.

Поскольку вы упомянули 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/FabricTelemetryInitializer.cs#L81

0 голосов
/ 13 марта 2019

Я думаю, вы можете использовать этот код:

[DebuggerStepThrough]
public class ServiceNameInitializer : ITelemetryInitializer
{
    /// <inheritdoc />   
    public void Initialize(ITelemetry telemetry)
    {
        telemetry.Context.Cloud.RoleName = "ServiceA";
    }
}

А в ConfigureServices добавить:

services.AddSingleton<ITelemetryInitializer, ServiceNameInitializer>();
...