跳转到主要内容
配置故障 自定义操作,允许您在故障排查期间,快速调用外部接口,实现故障自愈、信息丰富等任何自定义操作。

一、创建操作

  1. 登录 Flashduty 控制台,进入【集成中心-Webhook】
  2. 点击添加 自定义操作 集成
  3. 配置 操作名称,此名称将以按钮的形式体现在故障详情中
  4. 配置 协作空间,可以配置多个,但每个协作空间至多添加三个 自定义操作
  5. 配置 Endpoint、自定义 Headers
  6. 保存,完成

二、推送描述

请求方式

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}}"),变量会被转为字符串拼接
示例:
如果变量路径在默认 Payload 中不存在,系统会保留原始的 {{...}} 文本不做替换。建议先通过测试推送查看实际的默认 Payload,确认可用的字段路径。

值映射

通过值映射,可以在自定义请求体的变量解析时自动转换字段值。值映射按字段路径分组配置。 示例:
配合自定义请求体中的 "severity": "{{incident.incident_severity}}" 使用,当故障严重程度为 Critical 时,推送结果中 severity 字段的值为 P0。未匹配到映射的值将保持原样。

四、使用场景

重启主机

当主机内存或CPU打满,触发主机重启脚本,快速完成主机重启。

信息丰富

当故障发生时,回调您的服务,根据告警详情调取 Tracing、Logging、拓扑等信息,主动调用 Flashduty Open API 来更新故障信息,比如增加标签或设定自定义字段,辅助排障。

回滚变更

当发生故障时,如果确定故障由变更导致,可以直接触发回调到您的部署平台,开启回滚进程,加速故障恢复。

更新 status page

当确定故障影响到线上服务,可以触发外部 status page 更新,及时的通知到您的客户或上下游。

五、常见问题

  1. 服务是否有响应超时时间?
    • 服务需要在 2 秒内返回响应,超过 2 秒则认为响应失败
  2. 推送失败后是否会持续推送?
针对特定的网络错误,会进行重试,最多重试1次:
  • context deadline exceeded (排除 awaiting headers)
  • i/o timeout
  • eof
  1. 推送来源可信 IP 白名单?
    • 未来可能会更新,请定期查验