核心用途
标签贯穿 Flashduty On-call 的告警处理全流程:
| 场景 | 用途 |
|---|
| 故障筛选 | 在故障列表按标签快速过滤 |
| 路由分发 | 根据标签将告警路由到不同协作空间 |
| 分派通知 | 按标签匹配不同的分派策略 |
| 告警聚合 | 按标签维度聚合相似告警 |
| 静默/抑制 | 按标签匹配需要静默或抑制的告警 |
配置标签增强
进入 集成详情 → 标签增强 → 添加规则。
增强类型
| 类型 | 说明 | 示例 |
|---|
| 提取 | 用正则从标题/描述/标签中提取内容 | 从描述中提取 IP 地址 |
| 组合 | 用模板语法拼接新标签 | 组合域名+事件 ID 生成日志链接 |
| 映射 | 通过映射表将值转换为可读名称 | 将资源 ID 映射为资源类型 |
| 删除 | 移除指定标签 | 删除敏感信息标签 |
配置选项
| 选项 | 说明 |
|---|
| 限制条件 | 仅对匹配条件的告警生效,详见配置过滤条件 |
| 覆盖 | 开启后覆盖同名标签,默认关闭 |
| 预览 | 使用真实告警预览规则效果 |
多条规则从上到下依次执行。规则不匹配时跳过,不会生成对应标签。
配置示例
场景:告警事件来自邮件集成,需要从描述信息中提取关键信息作为标签应用到其他场景,比如将描述信息中的 IP 和触发值提取为独立的标签。 场景:公司的日志平台可以通过域名+事件ID+时间戳的方式直接访问到日志详情,但告警信息中只有事件ID和时间戳标签,所以需要根据这些信息组合成一个访问地址。 场景:当源告警信息中的标签值不固定且不能直观定位其含义时,可以通过映射的方式将源标签映射为新定义的标签和值。标签映射支持两种映射方式:| 映射类型 | 说明 | 适用场景 |
|---|
| Schema(映射表) | 通过预定义的 CSV 映射表进行静态映射 | 映射关系相对固定,数据量有限 |
| API(接口映射) | 通过调用外部 API 服务进行动态映射 | 需要查询外部系统(如 mapping api)获取实时数据 |
示例:源告警中只有资源类型 ID 信息,希望将每个 ID 对应的资源类型名称也体现出来。准备映射表文件
准备 CSV 格式的映射表文件,目的是将告警中的资源类型 ID 与实际的资源类型名称进行映射。| ID | Type |
|---|
| A | server |
| B | router |
| C | gateway |
| D | database |
| E | MQ |
创建映射表
- 进入
配置中心 → 映射数据 → 元数据表 → 创建映射表
- 填写基本信息,如名称、描述、管理团队等
- 在
映射表数据 处,上传准备好的 CSV 文件(如果数量较少,创建完成后可以在映射详情页面中编辑添加)
- 选择
源标签(如 ID),选择 目标标签(如 Type)
- 点击
创建,完成映射表创建
验证映射效果
告警原文:上报的告警信息中只有资源 ID,没有资源类型名称。映射效果:通过配置的映射关系,将资源 ID 映射出新的资源类型名称标签。 示例:需要根据告警中的主机信息从 mapping api 系统查询负责团队、服务等级等动态数据。创建映射服务
- 进入
配置中心 → 映射数据 → API → 创建API
- 填写服务配置信息:
| 配置项 | 说明 | 示例 |
|---|
| 服务名称 | 服务的可读名称 | Mapping api 资产查询服务 |
| 描述 | 服务用途说明 | 根据主机 IP 查询资产信息 |
| 请求 URL | API 的请求地址 | https://mapping-api.example.com/v1/enrich-event |
| 请求头 | HTTP 请求头配置 | X-Auth-Token: your-token |
| 超时时间 | 请求超时时间(秒) | 1 |
| 重试次数 | 请求失败后的重试次数 | 1 |
如果 API 使用 HTTPS 且证书不受信任,可开启 跳过证书验证 选项。
配置映射规则
在标签增强中添加映射规则,选择映射类型为 API:
- 选择已创建的映射服务
- 配置
生成标签列表:指定希望从 API 返回的标签名称,如 owner_team、service_tier、host_ip
- 根据需要开启
覆盖 选项
验证映射效果
当告警触发时,Flashduty 会自动调用配置的 API 服务,将告警事件数据发送给外部系统,并将返回的标签添加到告警中。
映射数据管理
映射表数据管理
在映射表详情页面中,可以对映射表数据进行管理:
| 功能 | 说明 |
|---|
| 数据搜索 | 按照源标签的值进行搜索 |
| 数据添加 | 手动添加映射数据 |
| 数据上传 | 上传新的数据映射表,会覆盖已有数据 |
| 数据下载 | 下载当前映射表数据到本地 |
| 数据展示 | 展示当前映射表数据,可以编辑或删除 |
对于频繁变更的映射关系(如 Mapping api 数据同步),建议使用 API 映射方式,或通过 Flashduty API 自动化更新映射表数据。
映射服务 API 规范
当使用 API 映射时,您的外部 API 服务需要遵循以下规范:
请求规范
Flashduty 将通过 POST 方法调用您的 API,请求体包含以下内容:
{
"result_label_keys": ["owner_team", "service_tier", "host_ip"],
"event": {
"account_id": 1,
"channel_id": 20,
"data_source_id": 15,
"data_source_type": "prometheus",
"description": "CPU usage for instance '10.0.1.1:9100' is over 95%",
"title": "High CPU Usage on instance 10.0.1.1:9100",
"alert_key": "d41d8cd98f00b204e9800998ecf8427e",
"alert_id": "62d6c0f6b8f1b2b3c4d5e6f7",
"event_severity": "Critical",
"event_status": "Critical",
"event_time": 1678886400,
"labels": {
"region": "us-east-1",
"service": "service-A",
"env": "production",
"instance": "10.0.1.1:9100"
}
}
}
| 字段 | 类型 | 说明 |
|---|
result_label_keys | array[string] | 期望返回的标签名称列表,由用户在规则中配置 |
event | object | 当前告警事件的完整信息 |
响应规范
API 需要返回以下格式的 JSON 响应:
成功响应 (HTTP 200):
{
"result_labels": {
"owner_team": "team-database",
"service_tier": "tier-1",
"host_ip": "10.0.1.1"
}
}
| 响应码 | 说明 |
|---|
200 OK | 成功,返回 result_labels 对象 |
404 Not Found | 未找到匹配数据 |
400 Bad Request | 请求格式错误 |
5xx | 服务器内部错误 |
如果某个请求的标签无法找到对应的值,API 不应在 result_labels 中包含该 key。
安全约束
为确保安全性,以下 HTTP Header 被禁止在映射服务中使用:
| 分类 | 禁用 Header |
|---|
| 认证与授权 | authorization, proxy-authorization, cookie, x-api-key, x-access-token |
| IP 伪造 | x-forwarded-for, x-real-ip, true-client-ip, x-client-ip |
| 主机与路由 | host, x-forwarded-host, x-forwarded-proto, x-internal-id, x-user-id |
| 协议相关 | transfer-encoding, upgrade, connection |
建议使用 X-Custom- 或 X-Enrich- 前缀的自定义 Header 进行认证。
最佳实践
- 性能优先:API 位于告警处理的关键路径,必须保证低延迟(建议 < 1s)
- 实现缓存:对于相同的查询条件,建议实现缓存以提高性能
- 幂等设计:对于同一个事件,多次调用应返回相同的结果
- 安全认证:API 必须通过认证机制保护,防止未授权访问
延伸阅读