使用 Webhook 将警报发送到外部系统

了解如何使用 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 属性可以是 InformationalWarningErrorCritical(从最不严重到最严重排列)。

确定事件的范围

服务运行状况警报可告知你有关多个区域和服务的问题。 若要获取完整详细信息,需分析 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 集成

执行以下步骤:

  1. 创建要发送的服务运行状况有效负载。 查看 Azure 活动日志警报的 Webhook 中的示例服务运行状况 Webhook 有效负载。

  2. 按如下所示创建 HTTP POST 请求:

    POST        https://your.webhook.endpoint
    
    HEADERS     Content-Type: application/json
    
    BODY        <service health payload>
    

    应会收到“2XX - 成功”响应。

  3. 转到 PagerDuty,确认集成已设置成功。

后续步骤