Alertmanager通过企业微信API实现告警推送,需配置企业ID、部门ID、AgentId和Secret四类凭证,并在alertmanager.yml中设置wechat_configs及模板文件。

Prometheus 本身不直接发送告警,而是把告警事件推给 Alertmanager,再由 Alertmanager 负责通知分发。要让告警最终出现在企业微信里,核心是配置 Alertmanager 支持企业微信通道,并确保消息能被正确识别和投递。
关键不是 Prometheus 直连企微,而是 Alertmanager + 企业微信 API 的组合打通。
一、企业微信侧准备四类凭证
登录 https://work.weixin.qq.com/ 后,按顺序获取以下四项信息,缺一不可:
解析微信公众号文章,提取标题、作者、正文、图片等信息。用户发送链接(mp.weixin.qq.com)时触发,自动提取内容并可保存至飞书表格。
-
企业ID:在【我的企业】→【企业信息】底部查看,形如
wwxxxxxxxxxxxxxx -
部门ID:在【通讯录】中新建一个专用告警部门(比如叫“运维告警组”),创建后点击该部门即可看到 ID,数字格式(如
2) - AgentId:进入【应用管理】→【创建应用】,填写名称(如“Prometheus告警”),创建后在应用详情页获取
- Secret:同上,在刚创建的应用页面点击“查看详情”,复制 Secret 字段(注意:仅首次可见,丢失需重置)
二、Alertmanager 配置企业微信接收器
编辑 alertmanager.yml,重点配置 global 和 receivers 两部分:
- 在
global区块声明企业微信基础参数:
wechat_api_corp_id: '你的企业ID'
wechat_api_secret: '你的Secret'
- 在
receivers中定义名为wechat的接收器,指定部门、AgentId 和模板:
wechat_configs:
- send_resolved: true
message: '{{ template "wechat.default.message" . }}'
to_party: '你的部门ID'
agent_id: '你的AgentId'
api_secret: '你的Secret'
- 确保
route中的receiver指向wechat,且templates路径包含你存放告警模板的目录(如- '/etc/alertmanager/templates/*.tmpl')
三、编写企业微信告警模板
新建 wechat.tmpl 文件,放在 Alertmanager 模板路径下。模板需区分故障与恢复两类消息,推荐结构如下:
- 使用
{{if gt (len .Alerts.Firing) 0}}判断是否为故障告警 - 使用
{{if gt (len .Alerts.Resolved) 0}}判断是否为恢复通知 - 关键字段建议包含:
alertname、severity、instance、summary、description、StartsAt、EndsAt - 企业微信支持 Markdown 格式,可用
=== ? 故障告警 ===等符号提升可读性
四、验证与调试要点
- 启动 Alertmanager 后,检查日志是否有
wechat: send notification或failed to send类报错 - 用
curl -X POST http://localhost:9093/api/v2/alerts手动触发测试告警(需构造 JSON body) - 若收不到消息,优先确认:
– 企业微信部门内是否有成员(仅部门成员可见)
– AgentId 和 Secret 是否匹配对应应用
– 企业微信后台该应用是否已启用并授权给目标部门


















