将Application Insights cloud_RoleName分配给运行OWIN的Windows Service

时间:2018-06-19 15:59:29

标签: owin azure-application-insights

我有一个由一系列Web服务器和微服务构建的应用程序,总共可能有12个。我想在Applications Insights中监视并重要地映射此服务套件。其中一些服务是使用Dot Net框架4.6构建的,并使用OWIN接收和响应请求,作为Windows服务进行部署。

为了使仪器能够与OWIN配合使用,我使用了ApplicationInsights.OwinExtensions软件包。我在所有服务中都使用一个检测键。

当我查看我的Applications Insights应用程序地图时,似乎我检测到的所有服务都被分组到一个“应用程序”中,并带有一些到外部依赖项的“链接”。我似乎无法生成“综合应用程序图”,建议在此处使用它:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-app-map

我假设这是因为我没有为每个服务设置不同的“ RoleName”。不幸的是,我找不到任何描述方法的文档。我的地图如下所示,但中间的大圆圈实际上是几种不同的微服务:

App Insights Map

我确实看到OwinExtensions软件包提供了自定义所报告遥测某些方面的功能,但是,如果不了解App Insights遥测的内部结构,我无法弄清楚它是否允许设置RoleName如果是这样,该如何完成。到目前为止,这是我尝试过的:

        appBuilder.UseApplicationInsights(
            new RequestTrackingConfiguration
            {
                GetAdditionalContextProperties = 
                    ctx =>
                        Task.FromResult(
                            new [] { new KeyValuePair<string, string>("cloud_RoleName", ServiceConfiguration.SERVICE_NAME) }.AsEnumerable()
                        )
            }
        );

在这种情况下,谁能告诉我如何指示App Insights收集遥测,这将导致构建复合应用程序图?

1 个答案:

答案 0 :(得分:1)

以下是有关TelemetryInitializer的总体文档,这正是您要为收集的遥测设置其他属性的内容-在这种情况下,请设置Cloud Rolename来启用应用程序映射。 https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling#add-properties-itelemetryinitializer

您的遥测初始化程序代码如下所示……

public void Initialize(ITelemetry telemetry)
{

if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                // set role name correctly here.
                telemetry.Context.Cloud.RoleName = "RoleName";
            }
}

请尝试一下,看看是否有帮助。