使用Application Insights统一监控Azure IIS多网站遇实时指标报错
我之前帮客户排查过完全相同的场景——Azure IIS VM托管多站点,用无代码Agent统一监控却遇到实时指标报错,给你几个靠谱的排查方向:
先确认Agent是否真的给所有站点都注入了监控
登录到你的VM,打开PowerShell,加载Application Insights Agent的模块(路径是C:\Program Files\Microsoft Application Insights Agent\StatusMonitor2\PowerShell\Microsoft.ApplicationInsights.StatusMonitor.PowerShell.dll),然后运行Get-ApplicationInsightsMonitoringStatus命令。重点看每个站点的InstrumentationKey是不是和你的目标App Insights资源一致,还有Status列是不是显示Instrumented。要是有站点没被正确注入,就用Enable-ApplicationInsightsMonitoring -InstrumentationKey "你的资源密钥" -AppPoolName "对应站点的应用池名称"单独给这个站点的应用池做注入。检查.NET环境和Agent的兼容性
无代码Agent对.NET版本有要求:.NET Framework站点得是4.6.1及以上;.NET Core站点要3.1+或者5.0+(不同Agent版本支持范围略有区别)。你可以在IIS里查看每个站点应用池的.NET CLR版本,同时去VM的C:\Program Files\Microsoft Application Insights Agent目录下看Agent的版本,尽量用最新版的Agent,旧版本可能对新.NET环境支持不好。实时指标的WebSocket连接要确保通畅
实时指标依赖WebSocket和App Insights服务通信,所以得确认:- VM的出站防火墙允许访问
*.applicationinsights.azure.com的443端口,别把WebSocket流量拦截了(Agent默认会配置,但如果有自定义防火墙规则就得检查)。 - 站点的web.config里没禁用WebSocket,也没有代理阻止WebSocket连接。如果用了企业代理,得确保代理允许WebSocket通过。
- VM的出站防火墙允许访问
扒日志找线索
Agent的日志在C:\Program Files\Microsoft Application Insights Agent\Logs里,看最新的StatusMonitor2_*.log和Redfield_*.log,有没有注入失败或者模块加载错误的信息。另外去Windows事件查看器的应用程序日志里,找有没有App Insights相关的报错,比如“无法加载Application Insights代理模块”这类记录。先验证单站点是否正常
先停掉其他站点的应用池,只留一个简单的站点,访问它之后再看实时指标。如果单站点正常,那可能是多站点同时上报的限流问题?不过实时指标的限流阈值挺高的,也可以去App Insights的“使用情况和预估成本”里看看有没有超出配额的提示。
最后提醒一句:无代码Agent不会自动给所有IIS站点都注入,每个应用池都需要单独确认或者手动注入,尤其是新增站点的时候别漏了。如果是.NET Core站点,还要确保应用池设置的是“无托管代码”模式哦。
内容的提问来源于stack exchange,提问作者weewoo

