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

一、创建操作

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

二、推送描述

请求方式

POST, Content-Type:“application/json”

请求 Payload:

字段类型必含释义
event_timeint64事件发生毫秒时间戳
event_typestring事件类型,固定值i_custom
event_idstring事件 ID,同一个事件可能因为超时等原因重试多次,接收方需要能够去重
personPerson操作人,仅人为动作时存在
incidentIncident故障详情
Person:
字段类型必含释义
person_idint64人员 ID
person_namestring人员名称
emailstring邮件地址
Responder:
字段类型必含释义
person_idint64人员 ID
person_namestring人员名称
emailstring邮件地址
assigned_atint64分派时间
acknowledged_atint64认领时间
Incident:
字段类型必含释义
incident_idstring故障 ID
titlestring故障标题
descriptionstring故障描述
impactstring故障影响
root_causestring故障根本原因
resolutionstring故障解决办法
incident_severitystring严重程度,枚举值:Critical,Warning,Info
incident_statusstring故障状态,枚举值:Critical,Warning,Info,Ok
progressstring处理进度,枚举值:Triggered,Processing,Closed
created_atint64创建时间
updated_atint64更新时间
start_timeint64触发时间,Unix 秒时间戳
last_timeint64最新事件时间,关联告警中的最新事件推送时间,Unix 秒时间戳,默认为 0
end_timeint64恢复时间,关联的告警全部恢复时,故障也会自动恢复,Unix 秒时间戳,默认为 0
ack_timeint64首次认领时间,故障可被多人认领,此时间为最早的认领时间。Unix 秒时间戳,默认为 0
close_timeint64关闭时间,end_time代表故障恢复时间,close_time代表处理进度的关闭时间,故障恢复时会同时关闭,故障关闭时不影响故障恢复。Unix 秒时间戳,默认为 0
snoozed_beforeint64暂缓截止时间
labelsmap[string]string标签 KV,Key 和 Value 均为字符串。手动创建时无此信息,自动创建时为聚合的第一条告警的标签信息
fieldsmap[string]interface自定义字段 KV,Key 为字符串,Value 可能为任意类型,取决于字段类型
creatorPerson创建人员信息,仅手动创建故障时存在
closerPerson关闭人员信息,仅手动关闭故障时存在
responders[]Responder处理人员信息列表
alertsAlert关联告警
alert_cntint64关联告警个数
channel_idint64协作空间ID,为0代表不属于任何空间
channel_namestring协作空间名称
detail_urlstring详情地址
group_methodstring聚合方式,枚举值:n:不聚合,p:按规则聚合,i:智能聚合
Alert:
字段类型必含释义
alert_idstring告警 ID
data_source_idint64集成 ID
titlestring告警标题
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 均为字符串

请求响应

HTTP status code 为 200,认为推送成功。

请求示例

curl -X POST 'https://example.com/incident/action?a=a' \
-H 'Content-Type: application/json' \
-H 'X-Customize-Header-A: a' \
-d '{
    "event_time": 1700208013988,
    "event_type": "i_custom",
    "incident": {
        "event_id":"fac0599a2a25529ba2362c0c184b6cfb",
        "account_id": 74058170041504,
        "account_name": "头铁科技",
        "ack_time": 0,
        "alert_cnt": 1,
        "alerts": [
            {
                "account_id": 74058170041504,
                "alert_id": "6551f37f8713372ad1054d54",
                "alert_key": "asdflasdfl2xzasd112621",
                "alert_severity": "Critical",
                "alert_status": "Critical",
                "close_time": 0,
                "created_at": 1699869567,
                "data_source_id": 2398086111504,
                "description": "cpu.idle < 20%",
                "end_time": 0,
                "event_cnt": 0,
                "labels": {
                    "a": "a",
                    "check": "自定义字段测试",
                    "cluster": "nj",
                    "metric": "node_cpu_seconds_total",
                    "resource": "es.nj.01",
                    "service": "engine",
                    "v": "v"
                },
                "last_time": 1699869562,
                "progress": "Triggered",
                "responder_email": "",
                "responder_id": 0,
                "responder_name": "",
                "start_time": 1699869562,
                "title": "nj / es.nj.01 - 自定义字段测试",
                "title_rule": "$cluster::$resource::$check",
                "updated_at": 1699869576
            }
        ],
        "assigned_to": {
            "assigned_at": 1699869576,
            "escalate_rule_id": "6509344bc1d50d723ca04986",
            "escalate_rule_name": "策略5",
            "id": "VobpBqvTuXgQ7BZzJ2Qu94",
            "layer_idx": 0,
            "type": "assign"
        },
        "channel_id": 1973372625504,
        "channel_name": "lim_test",
        "close_time": 0,
        "created_at": 1699869576,
        "data_source_id": 2398086111504,
        "dedup_key": "asdflasdfl2xzasd112621",
        "description": "cpu.idle < 20%",
        "detail_url": "http://10.206.0.17:8567/incident/detail/6551f3888713372ad1054d57",
        "end_time": 0,
        "equals_md5": "",
        "fields": {
            "impacted_services": [
                "passport",
                "order"
            ],
            "priority": "P3"
        },
        "group_method": "p",
        "impact": "",
        "incident_id": "6551f3888713372ad1054d57",
        "incident_severity": "Critical",
        "incident_status": "Critical",
        "labels": {
            "a": "a",
            "check": "自定义字段测试",
            "cluster": "nj",
            "metric": "node_cpu_seconds_total",
            "resource": "es.nj.01",
            "service": "engine",
            "v": "v"
        },
        "creator":{
            "email":"[email protected]",
            "person_id":1552048792504,
            "person_name":"头铁"
        },
        "last_time": 1699869562,
        "num": "054D57",
        "progress": "Triggered",
        "resolution": "",
        "responders": [
            {
                "acknowledged_at": 0,
                "assigned_at": 1699869576,
                "email": "[email protected]",
                "person_id": 1234648032504,
                "person_name": "zhangsan"
            }
        ],
        "root_cause": "",
        "snoozed_before": 0,
        "start_time": 1699869562,
        "title": "nj / es.nj.01 - 自定义字段测试",
        "updated_at": 1699929113
    },
    "person": {
        "email": "[email protected]",
        "person_id": 1999632289504,
        "person_name": "zhangsan"
    }
}' -v

三、使用场景

重启主机

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

信息丰富

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

回滚变更

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

更新 status page

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

四、常见问题

  1. 服务是否有响应超时时间?
    • 服务需要在 1 秒内返回响应,超过 1 秒则认为响应失败
  2. 推送来源可信 IP 白名单?
    • 未来可能会更新,请定期查验