> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashcat.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# 告警处理

> 在告警接入源头进行数据清洗、格式化与预处理

**告警处理 Pipeline** 允许您在告警数据进入 Flashduty On-call 的第一时间（集成层），对其进行**清洗**、**转换**和**过滤**。它就像一个数据加工厂，确保流入协作空间的告警是规范、清晰且有价值的。

## 处理顺序

告警事件进入 Flashduty 后，依次经过三个阶段：

| 阶段                   | 说明                                 |
| :------------------- | :--------------------------------- |
| **① 标签增强（Enrich）**   | 动态生成或修改告警标签，如通过 API 查询 CMDB 补充业务信息 |
| **② 告警处理（Pipeline）** | 清洗、转换、过滤告警数据（即本文档描述的功能）            |
| **③ 路由分发（Route）**    | 根据告警属性将事件分发到对应的协作空间                |

由于标签增强在 Pipeline 之前执行，Pipeline 的匹配条件**可以引用增强阶段新增或修改的标签**。

<Note>
  恢复事件（event\_status 为 Ok）不经过告警处理 Pipeline，直接进入告警合并流程。因此，Pipeline 中配置的丢弃、抑制、重写等规则不会对恢复事件生效。
</Note>

## 工作原理

Pipeline 位于 **标签增强** 和 **路由分发** 之间。它的执行逻辑如下：

1. **链式处理**：您可以配置多个处理规则，系统按照**从上到下**的顺序依次执行
2. **输入输出**：上一个规则处理后的结果（如修改了标题），可以作为下一个规则的输入
3. **层级定位**：Pipeline 作用于 **集成层**。这意味着规则一旦生效，所有通过该集成接入的告警都会受影响，无论它最终被路由到哪个协作空间

<Frame>
  <img src="https://docs-cdn.flashcat.cloud/images/png/517a537c48284c7b72d86262e7b855e7.png" alt="告警处理工作原理" />
</Frame>

## 配置入口

进入 **集成中心** => 选择已创建的集成 => **告警处理** 页签。

<Frame>
  <img src="https://docs-cdn.flashcat.cloud/images/png/e581fe9fc4ba1a505f0c47c7864c55ac.png" alt="告警处理配置入口" />
</Frame>

## 核心功能与场景

### 严重程度自定义

Flashduty On-call 已经为标准集成内置了等级映射（例如将 Zabbix `High` 映射为 `Critical`）。但如果默认规则不满足您的需求，您可以通过 Pipeline 进行覆盖。

**场景**：监控系统中的 `Warning` 级别告警，对于核心支付业务来说实际上是致命的，需要升级为 `Critical` 以触发电话通知。

| 配置项 | 值                                                       |
| :-- | :------------------------------------------------------ |
| 条件  | `labels.service` 等于 `payment` 且 `severity` 等于 `Warning` |
| 动作  | 更新严重程度为 `Critical`                                      |

### 信息重写

通过模板语法，将晦涩难懂的机器语言转换为人类可读的业务语言。

<Tabs>
  <Tab title="重写标题">
    **场景**：原始标题包含大量 ID，缺乏业务含义。

    | 项目    | 内容                                                        |
    | :---- | :-------------------------------------------------------- |
    | 原标题   | `[Problem] CPU Load High on i-12345678`                   |
    | 新标题模板 | `[TPL]{{.Labels.env}}环境 - {{.Labels.service}}服务 CPU 负载告警` |
    | 效果    | `生产环境 - 订单服务 CPU 负载告警`                                    |
  </Tab>

  <Tab title="重写描述">
    **场景**：在描述中自动追加 Runbook 链接或 dashboard 地址，辅助快速排障。

    | 配置项  | 值                                                                     |
    | :--- | :-------------------------------------------------------------------- |
    | 动作   | 更新告警描述                                                                |
    | 追加内容 | `Grafana看板: https://grafana.corp.com/d/cpu?var-host={{.Labels.host}}` |
  </Tab>
</Tabs>

### 告警丢弃

在数据入库前直接丢弃，不保留任何记录。这与协作空间的"排除规则"类似，但生效位置更靠前。

| 场景                        | 优势              |
| :------------------------ | :-------------- |
| 开发环境的频繁重启告警               | 直接在源头清洗         |
| 某些已知的无害报错（如 "NTP offset"） | 减少对后续路由和存储资源的占用 |

### 告警抑制

Pipeline 中的抑制功能与协作空间的抑制规则类似，都支持基于源告警、目标告警和关联条件的依赖抑制。需要注意的是，Pipeline 抑制仅在**同一集成**的告警范围内匹配源告警，而协作空间抑制则在整个空间的告警范围内匹配。

| 对比项  | Pipeline 抑制                  | 协作空间抑制             |
| :--- | :--------------------------- | :----------------- |
| 生效层级 | 集成层                          | 空间层                |
| 匹配范围 | 仅匹配同一集成内的活跃告警                | 匹配同一协作空间内的所有活跃告警   |
| 适用场景 | **全局性**的抑制逻辑，如机房断网后抑制该机房所有告警 | 特定协作空间的抑制规则        |
| 版本要求 | 需要标准版（Standard）及以上           | 需要标准版（Standard）及以上 |

<Tip>
  当整个机房断网时，该机房下的所有告警（无论属于哪个业务线）都应该被抑制。此时在集成层配置一条规则，比在几十个协作空间里分别配置要高效得多。
</Tip>

<Note>
  抑制功能仅匹配最近 10 分钟（600 秒）内仍处于活跃状态的源告警。如果源告警在 10 分钟前已触发且未更新，则不会被用于抑制匹配。请确保您的源告警在此时间窗口内持续活跃。
</Note>

## 参考历史数据

在编辑告警处理规则时，页面右侧提供 **关联告警** 面板，展示通过当前集成接入的历史告警数据。你可以一边编写处理规则，一边参考实际告警内容，确保规则的条件表达式和动作配置符合预期。

点击编辑页面右上角的 **参考历史数据** 按钮，即可打开或关闭右侧的关联告警面板。面板支持拖拽调整宽度，方便你在编辑区域和数据预览之间灵活切换。

<Tip>
  在首次配置 Pipeline 时，建议打开关联告警面板，参考真实的告警标签和字段值来编写匹配条件，避免因字段名称不一致导致规则无法命中。
</Tip>

## 引用语法说明

在重写标题或描述时，可以使用 Go Template 语法引用告警内部变量。合理使用变量引用，可以让您的告警通知更具动态性和信息量。

| 变量                        | 说明     | 示例                              |
| :------------------------ | :----- | :------------------------------ |
| `[TPL]{{.Labels.xxx}}`    | 引用特定标签 | `[TPL]{{.Labels.host}}`         |
| `[TPL]{{.Title}}`         | 引用当前标题 | `[TPL][转发] {{.Title}}`          |
| `[TPL]{{.Description}}`   | 引用当前描述 | `[TPL]详情: {{.Description}}`     |
| `[TPL]{{.EventSeverity}}` | 引用当前等级 | `[TPL]当前级别: {{.EventSeverity}}` |

<Tip>
  在配置 Pipeline 之前，建议先观察一段时间的原始告警数据，明确哪些字段（Labels）是稳定的，哪些是需要清洗的。
</Tip>

## 延伸阅读

<CardGroup cols={2}>
  <Card title="配置标签增强" icon="tags" href="/zh/on-call/integration/alert-integration/label-enhancement">
    动态生成或修改告警标签
  </Card>

  <Card title="配置过滤条件" icon="filter" href="/zh/on-call/configuration/filter-conditions">
    了解条件匹配语法
  </Card>

  <Card title="配置路由规则" icon="route" href="/zh/on-call/integration/alert-integration/routing-rules">
    将告警分发到不同协作空间
  </Card>

  <Card title="配置降噪策略" icon="volume-slash" href="/zh/on-call/channel/noise-reduction">
    在协作空间层面抑制告警
  </Card>
</CardGroup>
