如何在Azure中集中记录并展示APIM各类500错误及发生频率?
在Azure中集中查看APIM后端500错误类型及频率的实现方式
1. Azure Monitor + Log Analytics(推荐方案)
- 开启APIM诊断设置:在APIM资源的「诊断设置」中,勾选将
GatewayLogs发送到Log Analytics工作区,确保日志包含响应体数据。 - 编写Kusto查询统计错误:在Log Analytics工作区的「日志」页面,执行以下查询解析后端响应体,分组统计不同500错误的发生次数:
GatewayLogs | where ResponseStatusCode == 500 | extend ErrorDetails = parse_json(ResponseBody).status | where ErrorDetails.code == 500 | summarize ErrorCount = count() by ErrorDetails.message | sort by ErrorCount desc
- 可视化与固定:将查询结果保存为「日志查询」,并添加到Azure仪表板,实现实时查看错误分布。
2. APIM内置Analytics面板
- 配置日志收集:确保APIM已将日志发送到Azure Monitor(同方案1的诊断设置)。
- 自定义Analytics视图:进入APIM资源的「Analytics」页面,切换到「自定义」标签,添加新维度筛选:
- 选择「响应体」作为数据源,解析
status.message字段作为分组维度 - 筛选响应状态码为500,统计维度的出现次数
- 选择「响应体」作为数据源,解析
- 保存视图后,可直接在APIM界面查看各类500错误的频率分布。
3. Azure Workbooks
- 创建自定义工作簿:在Azure门户搜索「Workbooks」,新建空白工作簿,添加「Log Analytics」数据源。
- 导入统计查询:使用方案1中的Kusto查询,将结果可视化设置为条形图或饼图,直观展示错误占比。
- 添加交互控件:可添加时间范围选择器、环境筛选器等,灵活查看不同时段的错误数据,最后保存工作簿供团队共享。
4. 补充:结合Azure Alert Rules(异常告警)
- 基于Log Analytics的查询创建警报规则,当特定500错误(如"Internal Error due to database timeout")的发生次数超过阈值时,触发邮件/Teams通知,同时可在警报规则的「操作组」中关联日志查询,附带错误统计详情。
内容的提问来源于stack exchange,提问作者gouravm
相关产品推荐
相关产品推荐

