如何在Application Insights中跟踪Azure Function的401错误?
Azure Function 401未授权请求的日志追踪方案
为什么401请求没出现在Application Insights中
当你传入错误的x-functions-key时,请求的授权验证是由Azure Functions的前端网关完成的,这个过程不会进入你的函数应用代码逻辑,所以默认不会被Application Insights的常规追踪捕获——只有真正进入函数执行流程的请求,才会被AI记录相关日志。
开启401请求日志的方法
1. 启用平台日志
要捕获网关层的验证失败事件,需要开启函数应用的平台日志:
- 进入Azure门户的函数应用页面,左侧菜单选择
监测>日志 - 切换到
平台日志标签,开启HTTP日志和函数应用日志 - 保存配置后,401这类网关层的请求会被记录到
AppServiceHTTPLogs或FunctionAppLogs表中
2. 用Kusto查询筛选日志
启用平台日志后,在日志查询界面可以用以下语句快速定位401记录:
// 查询HTTP日志中的401请求 AppServiceHTTPLogs | where StatusCode == 401 | where RequestUri contains "/api/你的函数路径" | project TimeGenerated, StatusCode, RequestUri, ClientIP, UserAgent
或者查看函数网关的授权失败日志:
// 查询函数应用日志中的授权失败信息 FunctionAppLogs | where Message contains "Authorization failed" | project TimeGenerated, Message, RequestId
3. 调整Application Insights采样配置(可选)
如果AI的采样规则过滤了失败请求,检查host.json中的采样设置,确保没有排除请求类的遥测:
{ "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "", // 避免排除Request类型,或按需调整过滤规则 "maxTelemetryItemsPerSecond": 5 } } } }
其他查看途径
- 函数应用
监测>指标:添加Http 4xx指标,可以查看401请求的数量趋势,但无法获取单条请求的详细信息 - 函数应用的
诊断设置:可以将平台日志导出到存储账户、事件中心或Log Analytics工作区,方便长期存储和分析
内容的提问来源于stack exchange,提问作者GoldieLocks
相关产品推荐
相关产品推荐

