如何在Service Fabric中设置Cloud_RoleName

时间:2019-03-13 15:37:55

标签: azure azure-service-fabric azure-application-insights

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

如何将其与Kestrel WebHostBuilder的FabricTelemetryInitializer集成在一起?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为您可以使用以下代码:

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

然后在ConfigureServices中添加:

services.AddSingleton<ITelemetryInitializer, ServiceNameInitializer>();