了解如何使用 Webhook 设置 Azure 服务运行状况警报,以接收有关服务事件的实时通知。 此方法可实现与现有通知平台(例如 ServiceNow、PagerDuty 或 OpsGenie)的无缝集成。
使用 Webhook 设置健康通知
本指南概述了 Webhook 有效负载的关键组件,并演示如何设置自定义警报,使你随时了解相关的服务问题。
如果要使用预配置的集成,请阅读:
观看介绍视频:
使用服务运行状况 Webhook 有效负载配置自定义通知
若要设置自己的自定义 Webhook 集成,需要分析通过服务运行状况通知发送的 JSON 有效负载。
请参阅示例ServiceHealth
Webhook 有效负载。
可以通过查看 context.eventSource == "ServiceHealth"
来确认它是否为服务运行状况警报。 以下属性是最相关的属性:
- 数据.上下文.活动日志.状态
- data.context.activityLog.level
- data.context.activityLog.subscriptionId
- 数据.上下文.活动日志.属性.标题
- 数据.上下文.活动日志.属性.影响开始时间
- 数据.上下文.活动日志.属性.通信
- 数据.上下文.活动日志.属性.受影响的服务
- data.context.activityLog.properties.trackingId
针对事件创建服务运行状况仪表板的链接
通过生成专用 URL,在桌面或移动设备上创建指向服务运行状况仪表板的直接链接。 使用 trackingId 以及采用以下格式的 subscriptionId 的前三个和最后三个数字:
https://app.azure.com/h/ <trackingId>/<subscriptionId 的前三个和最后三个数字>
例如,如果 subscriptionId 为 aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e,trackingId 为 0DET-URB,则服务运行状况 URL 为:
https://app.azure.com/h/0DET-URB/bbadb3
使用级别来检测问题的严重性
有效负载中的 level 属性可以是 Informational、Warning、Error 或 Critical(从最不严重到最严重排列)。
确定事件的范围
服务运行状况警报可告知你有关多个区域和服务的问题。 若要获取完整详细信息,需分析 impactedServices
的值。
其中的内容是一个被转义的 JSON 字符串,解码后包含另一个可以正常解析的 JSON 对象。 例如:
{"data.context.activityLog.properties.impactedServices": "[{\"ImpactedRegions\":[{\"RegionName\":\"China East\"},{\"RegionName\":\"China North\"}],\"ServiceName\":\"Alerts & Metrics\"},{\"ImpactedRegions\":[{\"RegionName\":\"China North\"}],\"ServiceName\":\"App Service\"}]"}
会变为:
[
{
"ImpactedRegions":[
{
"RegionName":"China East"
},
{
"RegionName":"China North"
}
],
"ServiceName":"Alerts & Metrics"
},
{
"ImpactedRegions":[
{
"RegionName":"China North"
}
],
"ServiceName":"App Service"
}
]
此示例显示:
- 中国东部和中国北部的“警报和指标”
- 中国北部的“应用服务”。
通过 HTTP POST 请求测试 Webhook 集成
执行以下步骤:
创建要发送的服务运行状况有效负载。 查看 Azure 活动日志警报的 Webhook 中的示例服务运行状况 Webhook 有效负载。
按如下所示创建 HTTP POST 请求:
POST https://your.webhook.endpoint HEADERS Content-Type: application/json BODY <service health payload>
应会收到“2XX - 成功”响应。
转到 PagerDuty,确认集成已设置成功。
后续步骤
- 查看活动日志警报 webhook 架构。
- 了解服务运行状况通知。
- 详细了解操作组。