使用Application Insights时指标正常但无法查看日志的排障问询
Application Insights 日志不显示的排查方案
日志的正确查看位置
- 在Azure门户的目标Application Insights资源中,切换到**日志(Logs)**面板,使用Kusto查询语句检索日志:
- 输入
traces并运行,可查看所有发送到AI的日志条目 - 若要关联请求与日志,可使用
requests | join traces on operation_Id查询
- 输入
- 基于工作区的AI资源,日志会同步到关联的Log Analytics工作区,也可直接在Log Analytics的日志面板执行相同查询
逐步排查步骤
1. 确认日志注入配置的正确性
检查Program.cs中的代码,确保Application Insights日志集成已正确配置:
var builder = WebApplication.CreateBuilder(args); // 启用Application Insights遥测 builder.Services.AddApplicationInsightsTelemetry(); // 配置日志关联到Application Insights builder.Logging.AddApplicationInsights(options => { options.ConnectionString = builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]; options.IncludeScopes = true; }); // 设置全局最小日志级别,需覆盖默认限制 builder.Logging.SetMinimumLevel(LogLevel.Information); var app = builder.Build(); // ... 其他中间件配置
2. 验证日志级别与过滤规则
检查appsettings.json中的Logging节点,确保Application Insights的日志级别未被过度限制:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" }, "ApplicationInsights": { "LogLevel": { "Default": "Information" } } } }
确保你在控制台输出的日志级别(如Information)包含在AI的日志级别配置中。
3. 确认连接字符串与网络权限
- 验证连接字符串是基于工作区的AI资源提供的(从资源概述页复制),而非旧版仪表密钥
- 检查应用运行环境的网络:本地测试需确保能访问Azure公共端点;服务器环境需确认防火墙/出站规则未拦截AI的日志传输
4. 排查采样机制影响
Application Insights默认采样可能过滤低频率日志,可临时关闭采样验证:
在appsettings.json中添加:
"ApplicationInsights": { "ConnectionString": "你的连接字符串", "Sampling": { "Enabled": false } }
重启应用后生成日志,等待几分钟再查询AI。
5. 检查自定义遥测逻辑
若你添加了自定义TelemetryInitializer或TelemetryProcessor,确认没有逻辑过滤掉TraceTelemetry条目,例如设置SampleRate=0或直接取消发送。
6. 验证数据传入状态
在AI资源的使用情况和估计成本面板,查看「数据传入」指标中的traces条目:
- 若数据量为0:说明应用未发送日志,需回到配置检查
- 若有数据但查询不到:可能是查询语句错误或数据延迟
7. 考虑数据延迟
基于工作区的AI日志存在3-5分钟的传输延迟,首次发送数据时延迟可能更长,请勿立即查询,等待足够时间后再尝试。
内容的提问来源于stack exchange,提问作者chrisdot
相关产品推荐
相关产品推荐

