告警处理 Pipeline 允许您在告警数据进入 Flashduty On-call 的第一时间(集成层),对其进行清洗、转换和过滤。它就像一个数据加工厂,确保流入协作空间的告警是规范、清晰且有价值的。
工作原理
Pipeline 位于 告警接入 和 路由分发 之间。它的执行逻辑如下:
- 链式处理:您可以配置多个处理规则,系统按照从上到下的顺序依次执行
- 输入输出:上一个规则处理后的结果(如修改了标题),可以作为下一个规则的输入
- 层级定位:Pipeline 作用于 集成层。这意味着规则一旦生效,所有通过该集成接入的告警都会受影响,无论它最终被路由到哪个协作空间
配置入口
进入 集成中心 => 选择已创建的集成 => 告警处理 页签。
核心功能与场景
严重程度自定义
Flashduty On-call 已经为标准集成内置了等级映射(例如将 Zabbix High 映射为 Critical)。但如果默认规则不满足您的需求,您可以通过 Pipeline 进行覆盖。
场景:监控系统中的 Warning 级别告警,对于核心支付业务来说实际上是致命的,需要升级为 Critical 以触发电话通知。
| 配置项 | 值 |
|---|
| 条件 | labels.service 等于 payment 且 severity 等于 Warning |
| 动作 | 更新严重程度为 Critical |
信息重写
通过模板语法,将晦涩难懂的机器语言转换为人类可读的业务语言。
场景:原始标题包含大量 ID,缺乏业务含义。| 项目 | 内容 |
|---|
| 原标题 | [Problem] CPU Load High on i-12345678 |
| 新标题模板 | [TPL]{{.Labels.env}}环境 - {{.Labels.service}}服务 CPU 负载告警 |
| 效果 | 生产环境 - 订单服务 CPU 负载告警 |
场景:在描述中自动追加 Runbook 链接或 dashboard 地址,辅助快速排障。| 配置项 | 值 |
|---|
| 动作 | 更新告警描述 |
| 追加内容 | Grafana看板: https://grafana.corp.com/d/cpu?var-host={{.Labels.host}} |
告警丢弃
在数据入库前直接丢弃,不保留任何记录。这与协作空间的”排除规则”类似,但生效位置更靠前。
| 场景 | 优势 |
|---|
| 开发环境的频繁重启告警 | 直接在源头清洗 |
| 某些已知的无害报错(如 “NTP offset”) | 减少对后续路由和存储资源的占用 |
告警抑制
Pipeline 中的抑制功能与协作空间的抑制规则完全一致,都支持基于源故障、目标故障和关联条件的依赖抑制。
| 对比项 | Pipeline 抑制 | 协作空间抑制 |
|---|
| 生效层级 | 集成层 | 空间层 |
| 适用场景 | 全局性的抑制逻辑,如机房断网后抑制该机房所有告警 | 特定协作空间的抑制规则 |
当整个机房断网时,该机房下的所有告警(无论属于哪个业务线)都应该被抑制。此时在集成层配置一条规则,比在几十个协作空间里分别配置要高效得多。
引用语法说明
在重写标题或描述时,可以使用 Go Template 语法引用告警内部变量。合理使用变量引用,可以让您的告警通知更具动态性和信息量。
| 变量 | 说明 | 示例 |
|---|
[TPL]{{.Labels.xxx}} | 引用特定标签 | [TPL]{{.Labels.host}} |
[TPL]{{.Title}} | 引用当前标题 | [TPL][转发] {{.Title}} |
[TPL]{{.Description}} | 引用当前描述 | [TPL]详情: {{.Description}} |
[TPL]{{.Severity}} | 引用当前等级 | [TPL]当前级别: {{.Severity}} |
在配置 Pipeline 之前,建议先观察一段时间的原始告警数据,明确哪些字段(Labels)是稳定的,哪些是需要清洗的。
延伸阅读