Azure App Service虚拟目录Application Insights Live Metric无数据问题
Azure App Service虚拟目录部署场景下Application Insights Live Metric无数据排查方案
这个问题核心原因基本都是平台默认的无代码监控只覆盖根目录应用,加上虚拟目录场景下SDK加载/配置冲突,按以下顺序排查即可:
- 关闭App Service平台层面的自动Application Insights注入
进入Azure门户对应App Service页,左侧菜单栏找到Application Insights入口,将页面内的开关切换为禁用。平台自带的无代码注入逻辑只会对根路径/下的应用生效,不会扫描挂载的虚拟目录,还会和项目内手动安装的NuGet版SDK产生加载冲突,直接关掉就行,子应用的SDK会自己完成上报。 - 校验两个子项目的SDK版本与发布文件
首先确认两个项目安装的Application Insights SDK满足最低版本要求:- .NET Framework项目需安装
Microsoft.ApplicationInsights.Web,版本不低于2.4.0,低于该版本的SDK本身不支持虚拟目录路径下的Live Metric上报 - .NET Core/.NET 5+项目需安装
Microsoft.ApplicationInsights.AspNetCore,版本不低于2.13.0
发布完成后进Kudu控制台,分别进入两个虚拟目录对应的物理路径,检查:
- .NET Framework项目是否存在
ApplicationInsights.config文件,.NET Core项目的appsettings.json中是否包含正确的Application Insights连接字符串/Instrumentation Key,值和你使用的Application Insights实例完全一致 - 对应SDK的dll文件是否都被发布到了bin目录,没有被发布配置过滤掉
- .NET Framework项目需安装
- 检查web.config的配置继承问题
因为根目录没有部署应用,首先确认根目录下的web.config没有错误拦截所有请求,其次如果根目录配置了inheritInChildApplications="false",要确认该属性是加在<location path="." inheritInChildApplications="false">节点下,不要错误屏蔽了子应用的HTTP模块注册。
单独检查两个虚拟目录下的web.config,确认各自的运行时模块(AspNetModule/AspNetCoreModule)配置正确,子应用运行在独立的应用域下,同时.NET Framework项目要确认Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule在模块注册节点内,没有被根配置继承移除。 - 排查SDK初始化与网络连通性
先访问两个子应用的几个页面/接口触发请求,再去Kudu的D:\home\LogFiles\Application\路径下查看Application Insights的运行日志,常见报错包括Instrumentation Key缺失、SDK加载失败、上报端点被拦截。
如果是网络问题,确认App Service出站规则没有拦截对应环境的Application Insights端点:Live Metric专用上报地址为rt.services.visualstudio.com(全球版Azure),中国区等主权云环境需要替换为对应区域的上报端点,不要默认使用全球版配置导致连接失败。 - 验证上报链路
不要从App Service侧边栏跳转进Application Insights,直接打开目标Application Insights实例,进入Live Metrics页面等待1-5分钟(刚发布完成后SDK初始化、建立Live Metric连接需要一定时间)。如果还是没有数据,可以在两个子应用的启动代码里加一条测试Trace上报,去Application Insights的事务搜索里查这条日志:如果能查到说明基础上报链路正常,问题基本是SDK版本过低,升级到最新稳定版即可;如果查不到,回到前面的步骤检查配置和网络。
避坑提示:不要为了隔离配置直接在根目录放一个完全空的web.config,会导致所有子虚拟目录的IIS配置加载异常。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

