Skip to main content
OpenShift Container Platform 的监控栈自带 Alertmanager(openshift-monitoring 项目中的 alertmanager-main)。官方文档列出的接收器类型包括 PagerDuty、Webhook、Email、Slack 和 Microsoft Teams,并说明上游 Alertmanager 支持的配置项在 OpenShift 中同样支持。Webhook 接收器向你填写的地址发送 Alertmanager 格式的 JSON(version 为 4,每条告警带 status、labels、annotations、startsAt、endsAt、generatorURL、fingerprint)。Flashduty 的 Prometheus 集成 与该格式兼容,因此不需要单独的 OpenShift 集成:在 Flashduty 创建 Prometheus 集成,把它的推送地址配置为 OpenShift Alertmanager 的 Webhook 接收器。

在 Flashduty On-call


您可通过以下两种方式获取集成推送地址,任选其一即可。集成类型都选择 Prometheus,不是 Chronosphere。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
  3. 选择 Prometheus,点击 保存
  4. 打开生成的集成卡片,复制 推送地址,形如 https://api.flashcat.cloud/event/push/alert/prometheus?integration_key=<集成密钥>

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 Prometheus,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 OpenShift 中配置


OpenShift 官方文档提供两种方式配置接收器,任选其一。操作需要 cluster-admin 权限。
1

方式一:在 Web 控制台配置

  1. 在 Administrator 视角进入 Administration → Cluster Settings → Configuration → Alertmanager
  2. 在 Receivers 区域点击 Create Receiver
  3. 填写 Receiver name(例如 flashduty),Receiver type 选择 Webhook
  4. 在 Webhook 的地址栏填入上一步复制的完整推送地址(包含 ?integration_key=...)
  5. 点击 Show advanced configuration 可以查看发送恢复告警(resolved)的选项,默认发送,保持不变
  6. 在 Routing labels 区域通过 Add label 添加路由标签和值,决定哪些告警发送到该接收器;按官方文档,触发告警的标签与所有选择器匹配时才会发送到该接收器;需要精确匹配标签值时在此添加
  7. 点击 Create
2

方式二:编辑 alertmanager-main Secret

  1. 导出当前配置:
  2. 在 alertmanager.yaml 中加入接收器和路由。下面的示例在默认配置的基础上增加 flashduty 接收器,并把 severity 为 critical 或 warning 的告警路由到它;send_resolved 在 Alertmanager 的 Webhook 配置中默认为 true,写出来是为了保证恢复通知不被关闭:
把 <集成密钥> 换成你的 Flashduty 集成密钥。新增路由放在 Watchdog 路由之后:Watchdog 是持续触发的心跳告警,OpenShift 文档说明它用于检查通知链路,不应作为故障告警进入 Flashduty。
  1. 用修改后的文件替换 Secret:
3

验证

触发一条集群告警(OpenShift 文档提到可参考 Red Hat 客户门户的 “Send test alerts to Alertmanager in OpenShift 4”),确认 Flashduty 收到活动告警;告警恢复后,确认 Flashduty 中的原告警关闭。

字段映射


一次通知可以包含多条告警,Flashduty 逐条处理(单次最多 100 条)。

恢复与去重


  • Alertmanager 的 Webhook 接收器 send_resolved 默认为 true。恢复时发送 status 为 resolved 的通知,Flashduty 按相同的 fingerprint 关闭对应告警。
  • 如果在 Show advanced configuration 中关闭了恢复通知(或在 YAML 中设置 send_resolved: false),Flashduty 不会收到恢复请求,请在协作空间中开启 超时自动关闭。
  • Alertmanager 会按 repeat_interval 重复发送仍在触发的告警,Flashduty 按 fingerprint 去重,不会产生重复告警。

排查问题


  • Flashduty 返回 Invalid parameters:推送地址不完整,缺少 integration_key,或集成类型不是 Prometheus
  • 告警没有恢复:确认接收器没有关闭 send_resolved
  • 收不到任何告警:确认路由的 matchers 或 Routing labels 与告警标签匹配,集群能访问 api.flashcat.cloud(集群使用 HTTP 代理时,参考 OpenShift 文档中 proxy_from_environment 的说明),可用 oc exec alertmanager-main-0 -n openshift-monitoring -- amtool config routes show --alertmanager.url http://localhost:9093 查看生效的路由