ASP.NET Core 本地调试时如何禁用Application Insights

微软智能云Azure的Application Insights服务是一种应用程序监控系统,给运维带来了极大的方便。但有时候会遇到一些小麻烦,我们来看看如何解决。

我遇到的问题是,ASP.NET Core应用安装了Application Insights服务以后,默认情况下竟然是不区分环境的。这会导致本地开发调试代码的时候,有大量无用的监控数据,比如错误、异常、程序响应时间等,被发送到了Azure,和生产上的监控数据合并到了一起。而本地的这些数据,其实是对生产环境的污染,容易让Azure的智能监测服务误判,从而给运维人员发假警报。所以我需要一种方式,能够禁用本地的Application Insights监控,只有上线以后才启动。

(Debug时候产生的监控数据)

调教 VS2017

Tools > Options > Project and Solutions > Web Projects 下面,勾选 Disable local Application Insights for Asp.Net Core web projects.

代码更改

首先,在开发环境使用的appsettings.Development.json里,用空GUID覆盖InstrumentationKey

"ApplicationInsights": {

"InstrumentationKey": "00000000-0000-0000-0000-000000000000"

}

打开Startup.cs,把以下代码插入Configure()方法的下面:

if (env.IsDevelopment())

{

TelemetryConfiguration.Active.DisableTelemetry = true;

TelemetryDebugWriter.IsTracingDisabled = true;

//...

}

Application Insights的前端JS库,可以用environment标签忽略掉本地环境

<environment exclude="Development">

@Html.Raw(JavaScriptSnippet.FullScript)

</environment>

现在,本地跑一下应用,可以看到诊断工具里已经没有Application Insights的消息了。

稍等一段时间(比如我的监控图表周期是24小时)。现在你的生产环境监控数据就不会混进奇怪的东西啦~

原先Application map里会出现localhost,现在也没有了,证明我们的调整成功了!

参考资料:https://stackoverflow.com/questions/32057441/disable-application-insights-in-debug

原文发布于微信公众号 - 汪宇杰博客(ediwangblog)

原文发表时间:2019-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券