如何在Service Fabric中设置Cloud_RoleName

问题描述 投票:0回答:2

我正在尝试在Application Insights Application Map中获得更加用户友好的组件名称。我找到了示例,但没有专门针对Service Fabric。

如何将它与作为Kestrel WebHostBuilder一部分的FabricTelemetryInitializer集成?

azure azure-service-fabric azure-application-insights
2个回答
1
投票

如果您没有使用Application Insights Service Fabric nuget包,那么您应该使用它来设置您的云角色。 https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric.Native

如果您的应用程序引用了服务结构运行时,则应使用Microsoft.ApplicationInsights.ServiceFabric.Native,因为此库与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
投票

我想你可以使用这段代码:

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

并在ConfigureServices添加:

services.AddSingleton<ITelemetryInitializer, ServiceNameInitializer>();
© www.soinside.com 2019 - 2024. All rights reserved.