Azure App Service生产环境Application Insights初始化异常排查求助
.NET API + Angular SPA 生产环境Application Insights无Trace日志排查问题
我有两个运行.NET API+Angular SPA的Azure App Service(测试、生产环境),部署方式完全一致,仅Angular构建配置因发布环境(Staging/Release)不同存在差异。
我通过以下代码配置日志与Application Insights:
builder.Logging.AddAzureWebAppDiagnostics(); builder.Services.Configure<AzureFileLoggerOptions>(options => { options.FileName = "azure-diagnostics-"; options.FileSizeLimit = 50 * 1024; options.RetainedFileCountLimit = 5; }); builder.Logging.AddApplicationInsights( config => config.ConnectionString = builder.Configuration.GetConnectionString("APPLICATIONINSIGHTS_CONNECTION_STRING"), _ => { } );
测试环境可正常在Application Insights中查看Trace数据,但生产环境无任何Trace记录。经核对,代码逻辑与核心配置(连接字符串、InstrumentationKey)均一致,不过生产环境缺少测试环境中由App Insights自动生成的多项配置项。已尝试重启App Service但问题未解决,因担心手动添加配置引发冲突,特求助该问题的根源及可排查方向。
测试环境配置
[ { "name": "APPINSIGHTS_INSTRUMENTATIONKEY", "value": "<key>", "slotSetting": true }, { "name": "APPINSIGHTS_PROFILERFEATURE_VERSION", "value": "1.0.0", "slotSetting": true }, { "name": "APPINSIGHTS_SNAPSHOTFEATURE_VERSION", "value": "1.0.0", "slotSetting": true }, { "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", "value": "<connection-string>", "slotSetting": false }, { "name": "APPLICATIONINSIGHTS_ENABLESQLQUERYCOLLECTION", "value": "disabled", "slotSetting": false }, { "name": "ApplicationInsightsAgent_EXTENSION_VERSION", "value": "~2", "slotSetting": true }, { "name": "DiagnosticServices_EXTENSION_VERSION", "value": "~3", "slotSetting": true }, { "name": "DISABLE_APPINSIGHTS_SDK", "value": "disabled", "slotSetting": false }, { "name": "IGNORE_APPINSIGHTS_SDK", "value": "disabled", "slotSetting": false }, { "name": "InstrumentationEngine_EXTENSION_VERSION", "value": "disabled", "slotSetting": true }, { "name": "SnapshotDebugger_EXTENSION_VERSION", "value": "disabled", "slotSetting": true }, { "name": "WEBSITE_APPINSIGHTS_ENCRYPTEDAPIKEY", "value": "{\"ApiKey\":\"<api-key>\",\"AppId\":\"<app-id>\"}", "slotSetting": false }, { "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS", "value": "30", "slotSetting": false }, { "name": "XDT_MicrosoftApplicationInsights_BaseExtensions", "value": "disabled", "slotSetting": true }, { "name": "XDT_MicrosoftApplicationInsights_Mode", "value": "recommended", "slotSetting": true }, { "name": "XDT_MicrosoftApplicationInsights_PreemptSdk", "value": "disabled", "slotSetting": true } ]
生产环境配置
[ { "name": "APPINSIGHTS_INSTRUMENTATIONKEY", "value": "<key>", // 已核对值 -> 正常 "slotSetting": false }, { "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", "value": "<connection-string>", // 已核对值 -> 正常 "slotSetting": false }, { "name": "ApplicationInsightsAgent_EXTENSION_VERSION", "value": "~2", // 初始值为3,已尝试改为2但无变化 "slotSetting": false }, { "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS", "value": "30", "slotSetting": false }, { "name": "XDT_MicrosoftApplicationInsights_Mode", "value": "Recommended", "slotSetting": false } ]
可能的根源与排查方向
- SDK禁用配置缺失:生产环境缺少
DISABLE_APPINSIGHTS_SDK和IGNORE_APPINSIGHTS_SDK配置项,默认情况下这两个配置可能被设为enabled,导致SDK发送的日志被拦截。手动添加这两个配置,值设为disabled,重启App Service后验证。 - 代理与SDK冲突:生产环境
XDT_MicrosoftApplicationInsights_Mode设为Recommended,该模式会启用Application Insights Agent(代理),若代理抢占了SDK的日志发送通道,会导致SDK数据无法上传。添加XDT_MicrosoftApplicationInsights_PreemptSdk配置项,值设为disabled,确保SDK优先发送数据。 - 日志级别过滤:检查生产环境的
appsettings.Production.json,确认Logging节点中ApplicationInsights的日志级别是否包含Trace,避免因级别过高过滤掉Trace日志。示例配置:"Logging": { "ApplicationInsights": { "LogLevel": { "Default": "Trace" } } } - 网络出站限制:确认生产环境App Service的出站网络规则,是否允许访问Application Insights的服务端点(如
*.applicationinsights.azure.com)。可在Azure门户的App Service网络设置中检查防火墙或虚拟网络配置。 - 配置值实际生效验证:通过Kudu工具(App Service -> 高级工具 -> 启动)查看生产环境的实际环境变量,确认
APPLICATIONINSIGHTS_CONNECTION_STRING等关键配置未被其他配置源(如Key Vault、部署脚本)覆盖。 - 扩展依赖缺失:测试环境包含
DiagnosticServices_EXTENSION_VERSION等扩展配置,虽然这些主要用于Profiler/Snapshot功能,但部分基础日志传输可能依赖该扩展。尝试添加DiagnosticServices_EXTENSION_VERSION并设为~3,重启后观察。
内容的提问来源于stack exchange,提问作者Scryper
相关产品推荐
相关产品推荐

