针对部署到多个环境的Web应用程序的VS Application Insights

本文关键字:Web 应用程序 Application Insights VS 环境 部署 | 更新日期: 2023-09-27 17:57:37

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

有一件事似乎无法开箱即用,那就是按部署环境分离统计/分析。

只是想知道有人已经做到了吗?他们是如何做到的?

以下是我的想法。

  • 在AI中创建4个独立的"应用程序"(每个应用程序都有自己的应用程序名称和组件Id)

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

  • 手动将应用程序配置转换添加到应用程序以替换ComponentName&构建时基于Configurationin(QA、UAT或Prod)的组件ID

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

  • 将"#ifQA"预处理器指令添加到razor_layout视图中,以便在构建时将正确的ComponentId交换到javascript片段中。

想法?

针对部署到多个环境的Web应用程序的VS Application Insights

以下是我们所做的。

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

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

我从2015年1月7日起在msdn博客上发现了这一点,Application Insights支持多个环境、Stamps和应用程序版本。

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

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

我的步骤:

  1. ApplicationInsights.config中删除<InstrumentationKey>
  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;