6

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

开箱即用的一件事是按部署环境隔离统计/分析。

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

这就是我的想法。

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

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

  • 手动将 App.Config 转换添加到应用程序,以在构建时根据 Configuratoin(QA、UAT 或 Prod)替换 ComponentName 和 ComponentId

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

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

想法?

4

2 回答 2

6

这就是我们所做的。

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

    appInsights.start("@ServerAnalytics.ApplicationInsightsId");
    
于 2014-06-16T19:20:37.580 回答
0

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

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

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

我的步骤:

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

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

  3. 在http://portal.azure.com中为 Dev、Sta 等添加设置
  4. 启动时:

    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;

于 2016-09-27T06:36:46.300 回答