跳转到主要内容
配置告警 Webhook,当告警发生特定操作(如触发、关闭)时,系统通过 HTTP 回调您配置的地址。回调内容将包含告警最新关键信息,您可以与自研工具进行集成。

一、事件类型

目前支持以下事件类型,未来可能会增加。
事件类型释义
a_new集成推送新事件,触发一条新告警
a_update集成推送新事件,合并到一条告警,并更新告警信息(严重程度、状态、labels、描述等)
a_merge合并告警至故障
a_close手动关闭告警

二、推送描述

请求方式

POST, Content-Type:“application/json”

请求 Payload:

字段类型必含释义
event_timeint64事件发生毫秒时间戳
event_typestring事件类型,枚举值见事件类型
event_idstring事件 ID,同一个事件可能因为超时等原因重试多次,接收方需要能够去重
personPerson操作人,仅人为动作时存在
alertAlert告警详情
Person:
字段类型必含释义
person_idint64人员 ID
person_namestring人员名称
emailstring邮件地址
Alert:
字段类型必含释义
alert_idstring告警 ID
data_source_idint64集成 ID
data_source_namestring集成名称
data_source_typestring集成类型
channel_idint64协作空间 ID
channel_namestring协作空间名称
titlestring告警标题
title_rulestring标题生成规则
descriptionstring告警描述
alert_keystring告警关联依据
alert_severitystring严重程度,枚举值:Critical,Warning,Info
alert_statusstring告警状态,枚举值:Critical,Warning,Info,Ok
progressstring处理进度,枚举值:Triggered,Closed
created_atint64创建时间
updated_atint64更新时间
start_timeint64首次触发时间(平台接收到的首个事件的时间),Unix 秒时间戳
last_timeint64最新事件时间(平台接收到的最新事件时间),Unix 秒时间戳
end_timeint64告警恢复时间(平台上一次接收到结束类型事件的时间),Unix 秒时间戳,默认为 0
close_timeint64关闭时间,不同于 end_time,这个是处理进度的关闭,不代表告警真的恢复。Unix 秒时间戳,默认为 0
labelsmap[string]string标签 KV,Key 和 Value 均为字符串
event_cntint64关联事件个数
incidentIncident所属故障
Incident:
字段类型必含释义
incident_idstring故障 ID
titlestring故障标题

请求响应

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. 服务是否有响应超时时间?
    • 服务需要在 2 秒内返回响应,超过 2 秒则认为响应失败
  2. 推送失败后是否会持续推送?
针对特定的网络错误,会进行重试,最多重试2次:
  • context deadline exceeded (排除 awaiting headers)
  • i/o timeout
  • eof
  1. 如何保证推送顺序?
    • 理论上同一个告警的事件是按照时间顺序进行推送,但是重试等情况可能会导致乱序
    • 服务可以根据 event_time 进行过滤,如果已经收到了更晚的事件,可以直接过滤掉更早的事件,每一次推送都会携带最新的、完整的信息,偶尔丢失事件是可以容忍的
  2. 推送来源可信 IP 白名单?
    • 未来可能会更新,请定期查验