1. Phoenix 触发告警
-
规则计算结束
- 在
config/config.go:140
处,Phoenix 完成了告警计算,准备将结果发送给 Alertmanager。
- 在
-
调用 Alertmanager 客户端
- Phoenix 通过内部客户端向 Alertmanager 发送告警请求。
2. Alertmanager 接收并路由
-
HTTP 接口调用
- Phoenix 发起对
/api/v2/phoenix/alerting/channel/wechat
的 HTTP 请求,用于触发或校验 WeChat 通道配置。
- Phoenix 发起对
-
路由到 wechat 接收器
- Alertmanager 根据其路由规则,将告警路由到配置名称为
wechat
的接收器(receiver)。
- Alertmanager 根据其路由规则,将告警路由到配置名称为
3. wechat 通道构造并发送请求
-
加载通道配置
- 在
channel/channel.go:144
,读取agent_id
、corp_id
、corp_secret
、目标用户/群组等参数。
- 在
-
获取并缓存 Access Token
- 调用企业微信的
gettoken
接口获取access_token
,并根据 Token 有效期做本地缓存。
- 调用企业微信的
-
发送告警消息
- 向
https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=…
发起 POST 请求,携带告警内容和接收对象信息。
- 向
4. 企业微信 API 校验与响应
-
IP 白名单校验
- 企业微信后台会校验请求源 IP 是否在“可信 IP 列表”中。若不在,返回类似
errcode=60020
的“IP 不被允许”错误。
- 企业微信后台会校验请求源 IP 是否在“可信 IP 列表”中。若不在,返回类似
-
返回调用结果
- 成功:
errcode=0, errmsg="ok"
- 失败:形如
{"errcode":60020,"errmsg":"not allow to access from your ip"}
- 成功:
5. 完整链路示意
[Phoenix 规则引擎]
↓ Alertmanager 客户端 API 调用
[Prometheus Alertmanager]───路由───▶[wechat 接收器处理器]
↓ 构造并发送 HTTP 请求
[企业微信开放 API]───IP 白名单校验───▶ 返回调用结果