配置故障 Webhook,当故障发生特定操作(如触发、关闭)时,系统通过 HTTP 回调您配置的地址。回调内容将包含故障最新关键信息,您可以与自研工具进行集成。一、事件类型#
| 事件类型 | 释义 |
|---|
| i_new | 创建故障(自动或手动创建) |
| i_assign | 分派故障(自动或手动分派) |
| i_snooze | 手动屏蔽故障 |
| i_wake | 取消屏蔽故障 |
| i_ack | 手动认领故障 |
| i_unack | 取消认领故障 |
| i_storm | 触发风暴预警 |
| i_custom | 触发自定义操作 |
| i_rslv | 关闭故障(自动或手动关闭) |
| i_reopen | 重新打开故障 |
| i_merge | 手动合并故障 |
| i_r_title | 更新故障标题 |
| i_r_desc | 更新故障描述 |
| i_r_impact | 更新故障影响 |
| i_r_rc | 更新故障根因 |
| i_r_rsltn | 更新故障解决办法 |
| i_r_severity | 更新故障严重程度 |
| i_r_field | 更新故障自定义字段 |
二、推送描述#
请求方式#
POST, Content-Type:"application/json"
请求 Payload:#
| 字段 | 类型 | 必含 | 释义 |
|---|
| event_time | int64 | 是 | 事件发生毫秒时间戳 |
| event_type | string | 是 | 事件类型,枚举值见事件类型 |
| event_id | string | 是 | 事件 ID,同一个事件可能因为超时等原因重试多次,接收方需要能够去重 |
| person | Person | 否 | 操作人,仅人为动作时存在 |
| incident | Incident | 是 | 故障详情 |
| 字段 | 类型 | 必含 | 释义 |
|---|
| person_id | int64 | 是 | 人员 ID |
| person_name | string | 是 | 人员名称 |
| email | string | 是 | 邮件地址 |
| 字段 | 类型 | 必含 | 释义 |
|---|
| person_id | int64 | 是 | 人员 ID |
| person_name | string | 是 | 人员名称 |
| email | string | 是 | 邮件地址 |
| assigned_at | int64 | 否 | 分派时间 |
| acknowledged_at | int64 | 否 | 认领时间 |
| 字段 | 类型 | 必含 | 释义 |
|---|
| incident_id | string | 是 | 故障 ID |
| title | string | 是 | 故障标题 |
| description | string | 否 | 故障描述 |
| impact | string | 否 | 故障影响 |
| root_cause | string | 否 | 故障根本原因 |
| resolution | string | 否 | 故障解决办法 |
| incident_severity | string | 是 | 严重程度,枚举值:Critical,Warning,Info |
| incident_status | string | 是 | 故障状态,枚举值:Critical,Warning,Info,Ok |
| progress | string | 是 | 处理进度,枚举值:Triggered,Processing,Closed |
| created_at | int64 | 是 | 创建时间 |
| updated_at | int64 | 是 | 更新时间 |
| start_time | int64 | 是 | 触发时间,Unix 秒时间戳 |
| last_time | int64 | 否 | 最新事件时间,关联告警中的最新事件推送时间,Unix 秒时间戳,默认为 0 |
| end_time | int64 | 否 | 恢复时间,关联的告警全部恢复时,故障也会自动恢复,Unix 秒时间戳,默认为 0 |
| ack_time | int64 | 否 | 首次认领时间,故障可被多人认领,此时间为最早的认领时间。Unix 秒时间戳,默认为 0 |
| close_time | int64 | 否 | 关闭时间,end_time代表故障恢复时间,close_time代表处理进度的关闭时间,故障恢复时会同时关闭,故障关闭时不影响故障恢复。Unix 秒时间戳,默认为 0 |
| snoozed_before | int64 | 否 | 屏蔽截止时间 |
| labels | map[string]string | 否 | 标签 KV,Key 和 Value 均为字符串。手动创建时无此信息,自动创建时为聚合的第一条告警的标签信息 |
| fields | map[string]interface{} | 否 | 自定义字段 KV,Key 为字符串,Value 可能为任意类型,取决于字段类型 |
| creator | Person | 否 | 创建人员信息,仅手动创建故障时存在 |
| closer | Person | 否 | 关闭人员信息,仅手动关闭故障时存在 |
| responders | []Responder | 否 | 处理人员信息列表 |
| alert_cnt | int64 | 否 | 关联告警个数 |
| channel_id | int64 | 否 | 协作空间ID,为0代表不属于任何空间 |
| channel_name | string | 否 | 协作空间名称 |
| detail_url | string | 是 | 详情地址 |
| group_method | string | 否 | 聚合方式,枚举值:n:不聚合,p:按规则聚合,i:智能聚合 |
请求响应#
HTTP status code 为 200,认为推送成功。请求示例#
三、常见问题#
1.
服务需要在 1 秒内返回响应,超过 1 秒则认为响应失败
2.
目前 FlashDuty 最多推送一次,未来可能会引入重试机制,也可能因为中间链路超时导致重试,您需要做好幂等处理
3.
理论上同一个故障的事件是按照时间顺序进行推送,但是重试等情况可能会导致乱序
服务可以根据 event_time 进行过滤,如果已经收到了更晚的事件,可以直接过滤掉更早的事件,每一次推送都会携带最新的、完整的信息,偶尔丢失事件是可以容忍的
4.
47.94.95.118, 123.56.8.183, 47.94.193.81, 1.13.19.96