针对部署到多个环境的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片段中。
想法?
以下是我们所做的。
- 创建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中。
我的步骤:
- 从
ApplicationInsights.config
中删除<InstrumentationKey>
-
在Web.config 中添加设置
<add key="appInsightsInstrumentationKey" value="id_from hre"/>
- 在中添加设置http://portal.azure.com适用于Dev、Sta等
-
启动时:
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;