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

# 阿里云监控 2.0 通知策略版集成

> 使用云监控 2.0 通知策略和系统默认 Webhook 模板，将问题的触发、更新和恢复通知同步到 Flashduty On-call。

将阿里云监控 2.0 通知策略发送的问题通知同步到 Flashduty On-call。

## 与其他阿里云集成的区别

请根据阿里云侧的通知入口选择集成。

| 阿里云侧的通知方式 | Flashduty 集成 |
| - | - |
| 云监控 2.0 → 告警中心 → 通知策略 → 自定义 Webhook | **阿里云监控 2.0 通知策略版**，即本文介绍的集成 |
| 云监控 1.0 的云产品指标报警回调 | [阿里云 CM 指标](https://docs.flashduty.com/zh/on-call/integration/alert-integration/alert-sources/aliyun-cm-metrics.md) |
| 云产品系统事件回调 | [阿里云 CM 事件](https://docs.flashduty.com/zh/on-call/integration/alert-integration/alert-sources/aliyun-cm-event.md) |
| ARMS 或 Prometheus 监控的直接回调 | [阿里云 ARMS](https://docs.flashduty.com/zh/on-call/integration/alert-integration/alert-sources/aliyun-arms.md)或[阿里云 Prometheus 监控](https://docs.flashduty.com/zh/on-call/integration/alert-integration/alert-sources/aliyun-prometheus.md) |

通知策略会将相关事件组成一个阿里云问题。系统默认 Webhook 模板发送包含 `incidentId`、`title`、`state`、`severity` 和 `events[]` 的通知。即使事件来自 ECS、Prometheus 或 APM，只要通过此通知策略发送，都应使用本文的集成。

一份通知转换为一个 Flashduty 告警事件，使用 `incidentId` 作为关联标识（Alert Key，即 `alert_key`）。`events[]` 中的子事件用于补充描述和标签，不会逐条拆分。相同 `incidentId` 的后续通知使用相同关联标识；故障的形成和聚合仍遵循 Flashduty 的告警处理规则。

> [!WARNING]
>
> 本集成只支持阿里云**系统默认 Webhook 通知模板**。中文和英文都必须保持默认内容，不支持自定义模板、增删或重命名字段。若已编辑模板，请在阿里云模板编辑器中使用 **恢复默认**，并保存。不支持直接发送单条 CloudEvents 事件或自定义 JSON。

## 在 Flashduty On-call

您可通过以下两种方式获取集成推送地址，任选其一即可。

### 使用专属集成

如果您只需将告警发往一个协作空间，选择此方式。

> [accordion] 查看专属集成的配置步骤
>
> 1. 进入 Flashduty 控制台，选择 **协作空间**，打开目标协作空间。
> 2. 选择 **配置 → 集成数据 → 专属集成**，选择 **新增集成**。
> 3. 选择 **阿里云监控 2.0 通知策略版**，保存。
> 4. 打开集成卡片，复制 **推送地址**。

### 使用共享集成

如果您需要按告警内容路由到不同协作空间，选择此方式。

> [accordion] 查看共享集成的配置步骤
>
> 1. 进入 **集成中心 → 告警事件**。
> 2. 选择 **阿里云监控 2.0 通知策略版**，填写集成名称。
> 3. 配置默认路由并选择协作空间。
> 4. 保存并复制 **推送地址**；创建后可在 **路由** 中增加规则。

## 在阿里云中配置

**1. 创建自定义 Webhook 通知对象**

登录[云监控 2.0 控制台](https://cmsnext.console.aliyun.com)，选择目标工作空间，进入 **告警中心 → 通知管理 → 通知对象 → 自定义 Webhook**，新建通知对象。

| 配置项 | 值 |
| - | - |
| 名称、标识符 | 填写便于识别的名称，例如 `Flashduty`；标识符需唯一 |
| URL | `{integration_url}` |
| Headers | `Content-Type`：`application/json` |
| Method | `POST` |
| 数据格式 | `JSON` |
| 语言 | 中文或英文，与通知模板语言一致 |

保存通知对象。请使用本集成生成的完整推送地址，不要使用 ARMS、Prometheus 或 CM 指标集成的地址。

**2. 配置通知策略和默认模板**

进入 **告警中心 → 通知管理 → 通知策略**，创建或编辑目标策略。

1. 根据需要设置匹配条件，选中要同步的告警。
2. 将通知方式设为 **Webhook**，选择上一步创建的通知对象。
3. 使用 **系统默认 Webhook 通知模板**，保持中文和英文模板内容不变。不要创建自定义内容，也不需要在 Flashduty 配置字段映射。
4. 开启恢复通知并保存，确保同一个问题的触发和恢复都发送到该 Webhook。

如果已有模板被修改，在对应语言的 Webhook 模板编辑器中选择 **恢复默认** 后保存。有关模板入口，参见阿里云[通知模版](https://help.aliyun.com/zh/cms/cloudmonitor-2-0/cms-2-0-notification-template)文档。

**3. 验证触发和恢复**

等待匹配通知策略的真实告警触发。回到 Flashduty，检查集成的 **最新事件时间**，并确认目标协作空间收到告警。

检查标题、等级、资源标签和详情链接。随后让同一个阿里云问题恢复，确认恢复通知到达，并且使用相同 `incidentId` 关联原告警。阿里云发送成功仅表示推送完成，还需核对 Flashduty 中的实际结果。

## 状态和告警等级

恢复以通知顶层的 `state` 为准。恢复通知中的子事件可能保留触发时的状态和指标值，不影响恢复判断。

| 顶层 `state` | 顶层 `severity` | Flashduty |
| - | - | - |
| `triggered` | `CRITICAL`、`ERROR` | Critical |
| `triggered` | `WARNING`、`WARN` | Warning |
| `triggered` | `INFO` | Info |
| `resolved` | 上述支持的等级 | Ok（恢复） |

默认通知应包含 `incidentId`、`title`、`startTime`、`subscription`、`severity`、`state` 和 `events`。缺少必需字段或状态无效时，通知会被拒绝；`events` 允许为空数组。请恢复系统默认模板，避免通过自定义 JSON 补字段。

## 标签和描述

集成按白名单读取事件的标量字段，不会展开所有产品字段或嵌套 JSON。缺失、别名取值冲突或超过 512 字节的普通事件字段不生成标签。详情链接允许最多 8 KiB，超过时省略。最多生成 30 个标签，为 `events` 预留一个位置，并保留通知信息、详情链接和常用资源维度。

| 类别 | 可生成的标签 |
| - | - |
| 通知信息 | `cloud`、`incident_id`、`subscription`、`original_severity`、`event_count` |
| 精选事件 JSON | `events` |
| 监控和规则 | `region`、`workspace`、`rule_id`、`rule_name`、`monitoring_source`、`product` |
| 业务维度 | `env`、`business`、`team`、`project`、`service`、`app` |
| 容器和云资源 | `resource_domain`、`resource_type`、`entity_id`、`cluster`、`cluster_id`、`namespace`、`pod_name`、`workload_name`、`workload_kind`、`instance_id`、`instance_name`、`host`、`ip` |
| 产品实例 | `service_id`、`prometheus_id`、`prometheus_name` |
| 详情链接 | `alert_rule_url`、`alert_history_url`、`generator_url`、`resource_url` |

多事件通知只将**每个子事件都有且值相同**的事件维度提升为标签。例如，两个 Pod 的命名空间相同、Pod 名称不同，则保留 `namespace`，省略 `pod_name`。同类链接不一致时，也不会取第一条作为整条告警的链接。

`events` 标签保存精选字段的紧凑 JSON，不是上游事件整包。字段保留源名称、层级、类型和事件顺序，不解析嵌套的 JSON 字符串。您可在告警标签中按 JSON 查看详情。

| 保留内容 | 字段范围 |
| - | - |
| 当前观测值 | 当前统计值、采样时间、触发时间和告警持续时间 |
| 告警条件 | `detailValue` 中的指标、等级、阈值、值、状态、`idx` 和条件时间 |
| 查询配置 | 精简的 `rule.query`：`type`、`expr`、`duration`、`namespace`，以及有序 `queries` 中的 `measureCode`、`expr`、`duration`、`filters` 和 `groupBy` |
| APM 规则 | 用于解释告警条件的规则说明 |
| 区分上下文 | 独立标签未表达资源或规则时，在原路径保留必要上下文，包括多事件差异、别名冲突和标签数量上限导致的省略 |

查询、条件数组及其 `idx` 关联保持原顺序，不会任意拆分。流水标识、协议字段、`userId`、通知配置、完整规则、扩展和发送配置、JVM 属性，以及重复的 `_cms_val_json`、`reachedPointsJson` 不会写入此标签。资源、规则和详情链接继续使用独立标签，不在 JSON 中重复堆放。

`events` 标签最多保留 8 KiB。白名单筛选后没有可保留内容的事件会省略，`event_count` 仍记录上游原始事件数。正常筛选不标记为截断；只有精选内容仍超限时，才省略内容并改用包含 `events` 和 `_flashduty` 的对象。结果始终为有效 JSON，`_flashduty.truncated=true` 明确表示额外的有损省略。此标签不能作为完整原始报文使用。

描述仅包含上游 `annotations.message` 和 `annotations.summary` 的去重摘要；两者均无内容时，描述为空。摘要不会重复写入 `events`，资源和阈值也不会平铺到描述中。详情链接使用独立标签，只接受有效的 HTTP 或 HTTPS 地址。

资源标签中的 `instance` 不一定是故障资源，集成不会将监控采集地址直接当作实例 ID。`ip` 只接受合法 IP 地址。

## 常见问题

> [accordion] 推送返回 400，应该检查什么？
>
> 先确认 URL 来自 **阿里云监控 2.0 通知策略版** 集成。旧版 CM、ARMS 和 Prometheus 回调使用不同报文格式，不能互换地址。
>
> 再检查通知策略是否使用系统默认 Webhook 模板。自定义模板、单条 CloudEvents 事件以及缺少 `incidentId` 的 JSON 均不受支持。恢复默认内容后，重新触发通知验证。

> [accordion] 触发成功，但告警没有恢复
>
> 确认通知策略已开启恢复通知，并且恢复通知仍发送到相同 Webhook。对照两次通知的顶层 `incidentId` 和 `state`：标识应相同，恢复时 `state` 应为 `resolved`。不要用 `events[].status` 判断整个问题的恢复。

> [accordion] 为什么没有某个资源标签或详情链接？
>
> 该字段可能不在白名单中、值为空，或在多个子事件间存在差异。请查看 `events` 标签中的子事件上下文。不要修改阿里云默认模板来强行添加字段。

> [accordion] 阿里云侧没有发送通知
>
> 检查通知策略的匹配条件、通知方式和通知对象是否正确。私有化接收地址还需按阿里云[通知对象](https://help.aliyun.com/zh/cms/cloudmonitor-2-0/notification-object)文档放通网络访问。


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