一、功能概述
标签映射 API 允许您构建自定义的外部服务来增强告警标签。工作流程如下:- Flashduty 接收到告警事件
- 系统根据配置,将事件信息和期望获取的标签列表发送到您的 API
- 您的 API 查询外部数据源(如 CMDB、数据库等)
- API 返回计算得到的增强标签
- Flashduty 将返回的标签附加到告警上
二、API 规范
请求方式
POST, Content-Type:“application/json”
请求 Payload:
Event:
请求示例
响应规范
成功响应:失败响应:
- HTTP 状态码:
200 OK - 响应体必须是包含
result_labels字段的 JSON 对象 result_labels的 Key 必须是请求中result_label_keys指定的标签名- 如果某个标签无法获取,不应在响应中包含该 Key
提示: 返回200 OK状态码 + 空的result_labels: {}对象也会被视为”无结果”,但使用404状态码是更规范的做法。
三、配置映射服务
在 Flashduty 中配置标签映射时,您需要先创建一个映射服务,然后在标签增强规则中引用该服务。映射服务字段说明
标签增强规则配置
配置标签增强规则时,只需要关注以下配置:- result_label_keys:指定期望从 API 获取的标签列表,Flashduty 会自动将此列表和当前的
event对象组合成请求体发送给您的 API - 映射服务:选择或配置 API 服务的 URL、Headers 等信息
四、Header 安全约束
为了防止安全绕过、请求走私、IP 伪造及缓存污染,在自定义 API 请求头时,禁止使用以下 Header。系统网关将自动过滤或拒绝包含这些 Header 的请求。Header 最佳实践
- 白名单模式:建议仅允许以
X-Custom-或X-Enrich-为前缀的自定义 Header - 长度限制:单个 Header 的 Key 或 Value 长度不应超过 1024 字节
- 格式校验:Header 的 Value 严禁包含换行符(
\r、\n),以防止 Header 注入攻击
五、最佳实践
- 性能优先: 此 API 位于告警处理的关键路径上,必须保证低延迟。对外部数据源的查询应尽可能快,建议实现缓存机制。
-
明确的错误处理: 善用 HTTP 状态码(特别是
404)来传递清晰的执行结果。 -
幂等性: API 的设计应尽可能幂等。对于同一个
event,多次调用应返回相同的结果。 -
安全性: API 必须通过认证和授权机制进行保护,推荐使用自定义 Header(如
X-Custom-Auth)传递认证信息。
六、常见问题
-
服务是否有响应超时时间?
- 服务需要在配置的超时时间内返回响应,超时则认为响应失败
-
如果 API 返回失败会怎样?
- 告警会正常处理,但不会附加增强标签
- 根据配置的重试次数,系统可能会重试请求
-
result_label_keys 可以动态变化吗?
- 是的,您可以在 Flashduty 中随时修改期望获取的标签列表,无需修改 API 代码