告警 webhook
配置告警 Webhook,当告警发生特定操作(如触发、关闭)时,系统通过 HTTP 回调您配置的地址。回调内容将包含告警最新关键信息,您可以与自研工具进行集成。
一、事件类型
目前支持以下事件类型,未来可能会增加。
事件类型 | 释义 |
---|---|
a_new | 集成推送新事件,触发一条新告警 |
a_update | 集成推送新事件,合并到一条告警,并更新告警信息(严重程度、状态、labels、描述等) |
a_merge | 合并告警至故障 |
a_close | 手动关闭告警 |
二、推送描述
请求方式
POST, Content-Type:"application/json"
请求 Payload:
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
event_time | int64 | 是 | 事件发生毫秒时间戳 |
event_type | string | 是 | 事件类型,枚举值见事件类型 |
event_id | string | 是 | 事件 ID,同一个事件可能因为超时等原因重试多次,接收方需要能够去重 |
person | Person | 否 | 操作人,仅人为动作时存在 |
alert | Alert | 是 | 告警详情 |
Person:
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
person_id | int64 | 是 | 人员 ID |
person_name | string | 是 | 人员名称 |
string | 是 | 邮件地址 |
Alert:
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
alert_id | string | 是 | 告警 ID |
data_source_id | int64 | 是 | 集成 ID |
data_source_name | string | 是 | 集成名称 |
data_source_type | string | 是 | 集成类型 |
channel_id | int64 | 是 | 协作空间 ID |
channel_name | string | 是 | 协作空间名称 |
title | string | 是 | 告警标题 |
title_rule | string | 否 | 标题生成规则 |
description | string | 否 | 告警描述 |
alert_key | string | 是 | 告警关联依据 |
alert_severity | string | 是 | 严重程度,枚举值:Critical,Warning,Info |
alert_status | string | 是 | 告警状态,枚举值:Critical,Warning,Info,Ok |
progress | string | 是 | 处理进度,枚举值:Triggered,Closed |
created_at | int64 | 是 | 创建时间 |
updated_at | int64 | 是 | 更新时间 |
start_time | int64 | 是 | 首次触发时间(平台接收到的首个事件的时间),Unix 秒时间戳 |
last_time | int64 | 是 | 最新事件时间(平台接收到的最新事件时间),Unix 秒时间戳 |
end_time | int64 | 否 | 告警恢复时间(平台上一次接收到结束类型事件的时间),Unix 秒时间戳,默认为 0 |
close_time | int64 | 否 | 关闭时间,不同于 end_time,这个是处理进度的关闭,不代表告警真的恢复。Unix 秒时间戳,默认为 0 |
labels | map[string]string | 否 | 标签 KV,Key 和 Value 均为字符串 |
event_cnt | int64 | 否 | 关联事件个数 |
incident | Incident | 否 | 所属故障 |
Incident:
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
incident_id | string | 是 | 故障 ID |
title | string | 是 | 故障标题 |
请求响应
HTTP status code 为 200,认为推送成功。
请求示例
curl -X POST 'https://example.com/alert/webhook?a=a' \
-H 'Content-Type: application/json' \
-H 'X-Customize-Header-A: a' \
-d '{
"alert":{
"alert_id":"645c3affd2b92d989a0bd824",
"alert_key":"d21d9e3126f5ae94",
"alert_severity":"Warning",
"alert_status":"Warning",
"channel_id":1163577812973,
"channel_name":"订单系统",
"close_time":0,
"created_at":1683766015,
"data_source_id":1571358104973,
"data_source_name":"阿里云 SLS",
"data_source_ref_id":"",
"data_source_type":"aliyun-sls.alert",
"description":"测试发送到FlashDuty告警触发",
"end_time":0,
"event_cnt":1,
"incident":{
"incident_id":"645db17c9759374196929314",
"title":"123123123"
},
"labels":{
"a":"a",
"alert_type":"sls_alert",
"alert_url":"https://sls.console.aliyun.com/lognext/project/sls-api-testing/alert/alert-1683548531-071659",
"aliuid":"1082109605037616",
"check":"测试发送到FlashDuty",
"fire_results":"{\"_col0\":\"true\"}",
"fire_results_count":"1",
"project":"sls-api-testing",
"raw_condition":"Count:__count__ \u003e 0; Condition:",
"region":"cn-beijing",
"resource":"d18195cd567c6e8b-5fb6a5e6fb8ad-1f269e0",
"severity":"6"
},
"last_time":1683809153,
"progress":"Triggered",
"start_time":1683766013,
"title":"测试发送到FlashDuty告警触发",
"title_rule":"$resource::$check",
"updated_at":1683809170
},
"event_id":"ffcf1d47a8d853dc800d000c87e5568b",
"event_time":1683890681639,
"event_type":"a_merge",
"person":{
"email":"zhangsan@flashcat.cloud",
"person_id":82138731581973,
"person_name":"快猫星云"
}
}' -v
三、常见问题
服务是否有响应超时时间?
- 服务需要在 1 秒内返回响应,超过 1 秒则认为响应失败
推送失败后是否会持续推送?
- 目前 FlashDuty 最多推送一次,未来可能会引入重试机制,也可能因为中间链路超时导致重试,您需要做好幂等处理
如何保证推送顺序?
- 理论上同一个告警的事件是按照时间顺序进行推送,但是重试等情况可能会导致乱序
- 服务可以根据 event_time 进行过滤,如果已经收到了更晚的事件,可以直接过滤掉更早的事件,每一次推送都会携带最新的、完整的信息,偶尔丢失事件是可以容忍的
推送来源可信 IP 白名单?
- {ip_whitelist}
- 未来可能会更新,请定期查验
最后修改时间: 6 天前