针对部署到多个环境的Web App的VS Application Insights

时间:2014-04-09 09:55:38

标签: c# asp.net-mvc azure configuration azure-application-insights

我正在试验部署到Azure的Web应用程序上的MS Application Insgihts。

似乎没有开箱即用的一件事是按部署环境隔离stats / anayltics。

只是想知道有没有人已经这样做了,以及如何实现它?

这就是我的想法。

  • 在AI中创建4个单独的“应用程序”(每个应用程序都有自己的应用程序名称和组件ID)

  • 将单个ApplicationInsights.config添加到Web应用程序项目

  • 手动将App.Config转换为应用程序以替换ComponentName& ComponentId在构建时基于Configuratoin(QA,UAT或Prod)

  • 将条件编译符号添加到Web应用程序构建配置(QA,UAT,PROD)

  • 将“#if QA”预处理器指令添加到razor _layout视图,以便在构建时将正确的ComponentId交换到javascript代码段中。

思想?

2 个答案:

答案 0 :(得分:6)

这就是我们所做的。

  • 创建4个AI应用程序
  • 在我们的ApplicationInsights.config中,我们将其设置为我们的开发componentId。
  • 对于Test,Stage和Prod,我们使用构建脚本,根据我们所处的环境替换componentId和componentName。
  • 在布局javascript中获取appId:

    appInsights.start("@ServerAnalytics.ApplicationInsightsId");
    

答案 1 :(得分:0)

我在2015年1月7日的msdn博客上发现了这个Application Insights support for Multiple Environments, Stamps and App Versions

基本上,您可以从ApplicationInsights.config中删除检测密钥,并将其作为appSetting放入Web.config,然后在启动时进行设置。

这意味着您可以直接在azure中保留每个环境的配置。

我的步骤:

  1. <InstrumentationKey>
  2. 删除ApplicationInsights.config
  3. 在Web.config中添加设置

    <add key="appInsightsInstrumentationKey" value="id_from hre"/>

  4. http://portal.azure.com为Dev,Sta等添加设置
  5. 启动时:

    var aiInstrumentationKey = System.Web.Configuration.WebConfigurationManager.AppSettings["appInsightsInstrumentationKey"]; if( string.IsNullOrEmpty(aiInstrumentationKey)) { throw new ApplicationException("appInsightsInstrumentationKey missing in web.config"); } Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = aiInstrumentationKey;