一、创建操作
- 登录 Flashduty 控制台,进入【集成中心-Webhook】
- 点击添加 自定义操作 集成
- 配置 操作名称,此名称将以按钮的形式体现在故障详情中
- 配置 协作空间,可以配置多个,但每个协作空间至多添加三个 自定义操作
- 配置 Endpoint、自定义 Headers
- 保存,完成
二、推送描述
请求方式
POST, Content-Type:“application/json”
请求 Payload
Person:
Responder:
Incident:
Alert:
请求响应
HTTP status code 为 200,认为推送成功。请求示例
三、自定义请求体与值映射
自定义请求体
默认情况下,系统会按照上述 Payload 结构推送完整的 JSON 数据。如果您的接收方对数据格式有特殊要求,可以通过自定义请求体来重新组织推送内容。 使用{{字段路径}} 语法引用默认 Payload 中的任意字段,系统会在推送时将变量替换为实际值。
变量语法:
- 用
.分隔路径层级,如{{incident.title}}引用故障标题 - 支持数组索引访问,如
{{incident.responders.0.email}}引用第一个处理人的邮箱 - 当整个值只有一个变量时(如
"{{incident.labels}}"),会保留原始数据类型(对象、数组、数字等) - 当变量与其他文本混合时(如
"故障:{{incident.title}}"),变量会被转为字符串拼接
值映射
通过值映射,可以在自定义请求体的变量解析时自动转换字段值。值映射按字段路径分组配置。 示例:"severity": "{{incident.incident_severity}}" 使用,当故障严重程度为 Critical 时,推送结果中 severity 字段的值为 P0。未匹配到映射的值将保持原样。
四、使用场景
重启主机
当主机内存或CPU打满,触发主机重启脚本,快速完成主机重启。信息丰富
当故障发生时,回调您的服务,根据告警详情调取 Tracing、Logging、拓扑等信息,主动调用 Flashduty Open API 来更新故障信息,比如增加标签或设定自定义字段,辅助排障。回滚变更
当发生故障时,如果确定故障由变更导致,可以直接触发回调到您的部署平台,开启回滚进程,加速故障恢复。更新 status page
当确定故障影响到线上服务,可以触发外部 status page 更新,及时的通知到您的客户或上下游。五、常见问题
-
服务是否有响应超时时间?
- 服务需要在 2 秒内返回响应,超过 2 秒则认为响应失败
- 推送失败后是否会持续推送?
- context deadline exceeded (排除 awaiting headers)
- i/o timeout
- eof
-
推送来源可信 IP 白名单?
47.94.95.118、123.56.8.183、47.94.193.81和1.13.19.96(SaaS 版本;私有化部署的推送来源为您自有环境的出口地址,请向您的基础设施团队确认)- 未来可能会更新,请定期查验