在 Azure Monitor 中对经典指标警报调用 Webhook
警告
本文介绍了如何使用旧式经典指标警报。 Azure Monitor 现在支持 准实时指标警报和新的警报体验。 经典警报已对公有云用户停用。 对于 Azure 政府云和由世纪互联运营的 Microsoft Azure,经典警报将于 2024 年 2 月 29 日停用。
可以使用 Webhook 将 Azure 警报通知路由到其他系统,以便进行后续处理或自定义操作。 可以针对警报使用 Webhook,以将警报路由到可以发送短信的服务,以记录 Bug、通过聊天/消息服务通知团队,或进行各种其他操作。
本文介绍如何针对 Azure 指标警报设置 Webhook。 此外,还说明向 Webhook 发出的 HTTP POST 的有效负载的大致形式。 有关 Azure 活动日志警报(事件警报)的设置和架构的信息,针对 Azure 活动日志警报调用 Webhook。
Azure 警报使用 HTTP POST 将警报内容以 JSON 格式发送到创建警报时提供的 Webhook URI。 本文中稍后将定义架构。 此 URI 必须是有效的 HTTP 或 HTTPS 终结点。 激活警报时,Azure 会针对每个请求发布一个条目。
通过 Azure 门户配置 Webhook
若要添加或更新 Webhook URI,请在 Azure 门户中转到“创建/更新警报”。
还可以使用 Azure PowerShell cmdlet、跨平台 CLI 或 Azure Monitor REST API 将警报配置为发布到 Webhook URI。
对 webhook 进行身份验证
Webhook 可使用基于令牌的身份验证进行身份验证。 保存的 Webhook URI 具有令牌 ID。 例如: https://mysamplealert/webcallback?tokenid=sometokenid&someparameter=somevalue
负载架构
POST 操作对于所有基于指标的警报包含以下 JSON 有效负载和架构:
{
"status": "Activated",
"context": {
"timestamp": "2015-08-14T22:26:41.9975398Z",
"id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alertrules/ruleName1",
"name": "ruleName1",
"description": "some description",
"conditionType": "Metric",
"condition": {
"metricName": "Requests",
"metricUnit": "Count",
"metricValue": "10",
"threshold": "10",
"windowSize": "15",
"timeAggregation": "Average",
"operator": "GreaterThanOrEqual"
},
"subscriptionId": "s1",
"resourceGroupName": "useast",
"resourceName": "mysite1",
"resourceType": "microsoft.foo/sites",
"resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1",
"resourceRegion": "centralus",
"portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
字段 | 必需 | 一组固定值 | 说明 |
---|---|---|---|
状态 | Y | Activated, Resolved | 基于设置的条件的警报的状态。 |
上下文 | Y | 警报上下文。 | |
timestamp | Y | 触发警报的时间。 | |
id | Y | 每个警报规则都有一个唯一 ID。 | |
name | Y | 警报名称。 | |
description | Y | 警报的说明。 | |
conditionType | Y | “Metric”、“Event” | 支持两种类型的警报:指标和事件。 指标警报基于指标条件。 事件警报基于活动日志中的事件。 使用此值可检查警报是基于指标还是基于事件。 |
condition | Y | 要基于 conditionType 值检查的特定字段。 | |
metricName | 用于指标警报 | 定义规则监视对象的指标的名称。 | |
metricUnit | 用于指标警报 | “Bytes”、“BytesPerSecond”、“Count”、“CountPerSecond”、“Percent”、“Seconds” | 指标中允许使用的单位。 请参阅允许的值。 |
metricValue | 用于指标警报 | 导致警报的实际度量值。 | |
阈值 | 用于指标警报 | 会激活警报的阈值。 | |
windowSize | 用于指标警报 | 用于根据阈值监视警报活动的时间段。 此值必须介于 5 分钟到 1 天之间。 此值必须采用 ISO 8601 持续时间格式。 | |
timeAggregation | 用于指标警报 | “Average”、“Last”、“Maximum”、“Minimum”、“None”、“Total” | 随着时间推移,收集的数据应如何组合。 默认值为 Average。 请参阅允许的值。 |
运算符后的表达式 | 用于指标警报 | 用于将当前指标数据与所设阈值进行比较的运算符。 | |
subscriptionId | Y | Azure 订阅 ID。 | |
resourceGroupName | Y | 受影响资源的资源组名称。 | |
resourceName | Y | 受影响资源的资源名称。 | |
resourceType | Y | 受影响资源的资源类型。 | |
ResourceId | Y | 受影响资源的资源 ID。 | |
resourceRegion | Y | 受影响资源的区域或位置。 | |
portalLink | Y | 指向门户资源摘要页的直接链接。 | |
properties | N | 可选 | 包含有关事件的详细信息的一组键/值对。 例如,Dictionary<String, String> 。 properties 字段是可选的。 在自定义 UI 或基于逻辑应用的工作流中,用户可以输入键/值对,该键/值对可通过有效负载进行传递。 将自定义属性传递回 Webhook 的替代方法是通过 Webhook URI 本身(作为查询参数)。 |
注意
只能使用 Azure Monitor REST API 设置“属性”字段。
后续步骤
- 通过将 Azure 警报与 PagerDuty 集成视频了解有关 Azure 警报和 Webhook 的详细信息。
- 了解如何对 Azure 警报执行 Azure 自动化脚本 (Runbook)。
- 了解如何使用逻辑应用通过 Twilio 从 Azure 警报发送短信。
- 了解如何使用逻辑应用从 Azure 警报发送 Slack 消息。
- 了解如何使用逻辑应用从 Azure 警报将消息发送到 Azure 队列。