如何将Azure Application Insights查询结果嵌入告警JSON用于邮件通知?
问题诊断与解决
你的方案存在的核心问题
你创建的日志搜索告警默认只会返回告警触发的判定结果(比如"符合阈值≥1")和查询语句,不会主动附带KQL查询的详细结果——这类告警的设计逻辑是基于聚合后的统计值(比如异常计数)触发,而非直接返回原始查询数据。
两种可行解决方法
方法一:修改告警规则,开启"包含查询结果"选项
这是最直接的方式,让告警触发时自动把查询结果塞进Webhook JSON里:
- 打开Azure门户,找到你的自定义日志搜索告警规则,进入「编辑规则」页面
- 切换到「条件」配置页,在「警报逻辑」区域找到**「包含查询结果」**选项,设置为「是」
- 按需调整「结果集数量」(比如限制最多返回50条异常记录)
- 保存规则后,下次告警触发时,Webhook的JSON payload里会新增
SearchResults字段,里面就是你KQL查询返回的所有投影字段数据
方法二:在Logic App中主动查询结果(适合无法修改告警规则的场景)
如果没法调整告警配置,就在Logic App里主动调用Application Insights API拉取数据:
- 在Logic App的触发动作之后,添加一个「HTTP」动作
- 配置请求参数:
- 方法:
POST - URL:
https://api.applicationinsights.io/v1/apps/{你的AI资源ID}/query(替换{你的AI资源ID}为实际值,可在AI资源的「概述」页找到) - 请求头:添加
x-api-key,值为你的AI资源API密钥(在AI资源的「API访问」页生成) - 请求体:填入你的KQL查询语句,格式如下:
{ "query": "exceptions | where severityLevel >= 4 | where timestamp > ago(30m) | project timestamp, type, assembly, method, outerMessage, severityLevel, customDimensions | order by timestamp desc Alternatively id横向比 host and sit\_ Includingnext链接INST host使用的是默认的日志搜索告警,这种告警只返回告警触发的状态和查询语句,不会附带原始查询结果,必须显式开启"包含查询结果"的选项,或者在Logic App里主动拉取结果。 }
- 方法:
- 解析HTTP返回的JSON,提取
results[0].tables[0].rows和results[0].tables[0].columns,把行数据和字段名对应起来,就能拿到需要的异常详情,再插入到邮件内容里
内容的提问来源于stack exchange,提问作者Lombardo
相关产品推荐
相关产品推荐

