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

# 告警路由

> 按路由规则、服务的负责团队或 team 标签，把新事件交给对的团队和升级策略，并试一组标签会怎么分派。

路由决定一个新事件交给哪个团队、走哪条[升级策略](https://docs.molesignal.com/zh-Hans/alerting/on-call.md#升级策略)。打开 **告警 → 路由**。查看需要 `alerts.routing.read`，修改路由规则和团队的值班策略需要 `alerts.routing.manage`。

## 哪些事件走路由

[规则](https://docs.molesignal.com/zh-Hans/alerting/rules.md)、[告警来源](https://docs.molesignal.com/zh-Hans/alerting/sources.md)和[拨测检查](https://docs.molesignal.com/zh-Hans/synthetics.md#告警事件)把升级策略留给默认（别名 `default`）时，它们开的事件由路由分派：

| 来源 | 走路由的条件 |
| - | - |
| 规则 | 没有指定 `escalation_policy_id`。规则工作台保存的规则都是这样。 |
| 告警来源 | **升级策略** 选 **按路由分派（默认）**，新建时就是它。 |
| 拨测检查 | **升级策略** 选 **按路由分派**。 |
| 手动建的事件 | **交给谁** 选 **按路由分派**，见[新建事件](https://docs.molesignal.com/zh-Hans/alerting/incidents.md#新建事件)。 |

来源明确选了某条策略或不升级时，策略照旧，路由只定团队。

## 分派顺序

事件开启时依次看：

| 顺序 | 依据 | 说明 |
| - | - | - |
| 1 | 路由规则 | 从上往下比对，第一条命中的规则生效。 |
| 2 | 服务的负责团队 | 事件的服务在 [APM 服务目录](https://docs.molesignal.com/zh-Hans/apm#服务目录)里登记的 **负责团队**，已归档的服务不算。 |
| 3 | team 标签 | 标签 `team_id` 是团队 ID，或标签 `team` 是团队名（不区分大小写）。同名的团队不止一个时，按名字认不出团队。 |
| 4 | 默认策略 | 名为 `default` 的策略，见[默认策略](https://docs.molesignal.com/zh-Hans/alerting/on-call.md#默认策略)。 |

团队和升级策略分开定：

* 团队取第一个说得出的：命中规则的团队、服务的负责团队、team 标签指向的团队。
* 升级策略取命中规则的策略；规则指向团队，或者没有规则命中时，取上面那个团队的值班策略；团队没设值班策略或者没有团队时，用默认策略。

服务名依次取标签 `service.name`、`service`，都没有时取事件的第一个受影响服务；命名空间取标签 `service.namespace`，没有时是 `default`。分派的结果在事件开启时写在事件上，之后修改路由不会改变已经开启的事件。

## 路由规则

**路由规则** 按比对顺序列出规则，每行显示条件、最低严重度、来源和去向。拖动一行，或在行首的手柄上按 ↑ ↓ 键，就能调整顺序，新的顺序立即保存。行尾的开关停用或启用规则。规则指向的团队或策略被删除后，这一行显示 **去向已删除**，比对时跳过它。

### 新建规则

1. 点击 **新建规则**，填写 **名称**。

2. 在 **条件** 中点击 **添加条件**，写上标签、比较方式和取值。条件全部满足才算命中；不加条件时匹配所有事件。

   | 比较方式 | 命中 |
   | - | - |
   | **等于** | 标签等于取值。 |
   | **不等于** | 标签不等于取值，事件没有这个标签也算。 |
   | **属于** | 标签等于取值中的任何一个，多个取值用逗号分隔。 |
   | **匹配正则** | 整个标签值匹配正则。 |

3. 在 **范围** 中可以设：
   * **最低严重度**；
   * 只对哪些 **来源** 生效：**告警规则**、**外部告警**、**拨测**、**手动创建的事件**。都不选时，所有来源的事件都参与比对；
   * **优先级**：勾了哪些就只要这些优先级的事件，没设优先级的事件不匹配；都不勾时不看优先级；
   * **时间**：**任何时间**，或 **只在这些时段**、**只在这些时段以外**。时段按一个时区填几段，每段选星期和 HH:MM 起止，按事件开出来的时刻判断。在 **节假日** 里可以按[节假日日历](https://docs.molesignal.com/zh-Hans/alerting/on-call.md#节假日日历)把放假的日子去掉，或只在放假的日子生效。例如同样的标签，工作时间交给开发团队，其余时间（包括节假日）交给值班团队。

4. 在 **去向** 中选择：

   | 去向 | 效果 |
   | - | - |
   | **团队** | 事件交给这个团队，按团队的值班策略升级；团队没设值班策略时用默认策略。 |
   | **升级策略** | 事件直接用这条策略，团队仍按服务的负责团队或 team 标签认。 |

5. 点击 **创建**。新规则排在最后。

一个组织最多 200 条路由规则，一条规则最多 16 个条件，一个条件最多 100 个取值。

## 团队的值班策略

**团队的值班策略** 列出组织的团队、成员数和负责的服务。服务数链接到按这个团队筛选的服务目录，服务的负责团队也在那里登记。为团队选一条升级策略后，分派给这个团队的事件按它升级；选 **不设，用默认策略** 时用默认策略。团队在[身份与访问 → 团队](https://docs.molesignal.com/zh-Hans/identity/teams.md#团队)中管理。

## 试一试

**试一试** 按现在的路由规则和团队，算出一组标签会怎么分派：

1. 在 **标签** 中每行填一个 `key=value`，例如 `service.name=checkout`。
2. 选择 **来源**、**严重度** 和 **优先级**；要试带时间条件的规则时，在 **开出时刻** 选一个时刻，空着是现在。
3. 点击 **试一试**。

结果显示团队、升级策略和依据，并列出四步各自看到了什么：命中哪条规则，服务归哪个团队，team 标签指向哪个团队，有没有用到默认策略。

## 事件上的分派

事件详情的 **负责人** 中显示分派到的团队和依据，例如 **命中规则「生产环境的支付服务」**、**服务 checkout 的负责团队**。事件列表在负责人下面显示团队；当前用户属于某个团队时，列表多一个 **我的团队**，只列分派给这些团队的事件。

告警的通知事件带上分派到的团队。[通知策略](https://docs.molesignal.com/zh-Hans/notification-channels#创建模板和策略)的接收人是 **团队成员** 或 **团队负责人** 而没有指定团队时，通知这个团队。

## 导入导出

路由规则上方的 **导入导出** 用文件在组织之间搬运路由规则：

* **导出全部路由规则** 下载一个 `molesignal.routing-rules/v1` 包；选中几条时只导出这几条。升级策略、团队和节假日日历按名称引用。
* **导入路由规则…** 接受 JSON 或 YAML 的包，先预演，列出会新建、更新、不变和出错的规则。规则按名称对上，有一条出错时什么都不写。文件里的规则按文件的先后排在最前面，其余的规则保持原来的先后排在后面。

导入需要 `alerts.routing.manage`。升级策略和值班排班也一样，见[导入导出](https://docs.molesignal.com/zh-Hans/alerting/on-call.md#导入导出)。

## 跨集群联邦

开启了[跨集群联邦](https://docs.molesignal.com/zh-Hans/settings/data-plane.md#跨集群联邦)时，路由规则和团队的值班策略不在集群之间同步，因为团队和 APM 服务目录都是各集群自己的。升级策略会同步，指向升级策略的规则在每个集群都能用；每个集群的路由要各自配置。

## API

| 操作 | 端点 |
| - | - |
| 列出路由规则 | [`GET /api/v1/alerts/routing/rules`](https://docs.molesignal.com/zh-Hans/api/alerting/list-routing-rules) |
| 新建路由规则 | [`POST /api/v1/alerts/routing/rules`](https://docs.molesignal.com/zh-Hans/api/alerting/create-routing-rule) |
| 修改路由规则 | [`PUT /api/v1/alerts/routing/rules/{id}`](https://docs.molesignal.com/zh-Hans/api/alerting/update-routing-rule) |
| 删除路由规则 | [`DELETE /api/v1/alerts/routing/rules/{id}`](https://docs.molesignal.com/zh-Hans/api/alerting/delete-routing-rule) |
| 调整顺序 | [`PUT /api/v1/alerts/routing/rules/order`](https://docs.molesignal.com/zh-Hans/api/alerting/reorder-routing-rules) |
| 列出团队的值班策略 | [`GET /api/v1/alerts/routing/teams`](https://docs.molesignal.com/zh-Hans/api/alerting/list-routing-teams) |
| 设置团队的值班策略 | [`PUT /api/v1/alerts/routing/teams/{team_id}`](https://docs.molesignal.com/zh-Hans/api/alerting/set-team-policy) |
| 试一试 | [`POST /api/v1/alerts/routing/test`](https://docs.molesignal.com/zh-Hans/api/alerting/test-routing) |
| 导入导出 | [`GET /api/v1/alerts/routing/rules/export`、`POST /api/v1/alerts/routing/rules/import`](https://docs.molesignal.com/zh-Hans/api/alerting/oncall-transfer) |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.