服务器半夜宕机无人知,根源常在于Alertmanager未成功推送告警至企业微信。需确保可信IP、api_secret及请求体格式正确,注意corp_id为12位字符串、to_party填部门ID、模板文件独立且UTF-8编码。排错应查看/status页面确认告警路由,值班场景推荐使用自建应用实现分级推送。
服务器半夜宕机无人知?TP6.0 Prometheus监控告警与企业微信通知【值班】
时间:2026-07-18
浏览:364
文章目录
服务器半夜宕机没人知道——这种场景在运维圈里太常见了。问题的根源往往不是监控没配,而是告警链路断在了最后一步:alertmanager 没能把消息推送到企业微信。要么是连不上,要么是连上了但模板写错了,再不然就是 corp_id 权限没开对。
需要明确一点:Prometheus 本身不负责发通知,它的定位是“发现异常”。真正把告警推到微信里的,是 alertmanager。而企业微信这一端,接收消息必须满足三个硬条件:可信 IP 得对、api_secret 要正确、请求体格式必须符合企业微信 webhook 规范。任何一个环节出问题,告警就到不了你的手机。
Alertmanager 配置里最容易漏掉的三项
不少配置看起来跑通了,但消息就是收不到。问题基本都出在这三个细节上:
corp_id必须是「我的企业」页面底部显示的那串 12 位字符串(比如wwa9fa8a0ab8180c78),不是企业名称,也不是域名,别搞混。to_party填的是部门 ID(数字),不是部门名称。填错了,消息会静默失败,alertmanager日志里只显示status=400,不告诉你具体哪里不对。- 企业微信后台「应用管理 → 自建应用 → 可信 IP」里,必须添加
alertmanager所在服务器的公网出口 IP。注意,是公网 IP,不是内网 IP。加错了,请求直接被拦截,连日志都不会留下。
企业微信模板中的 message 字段必须用 tmpl 文件单独定义
alertmanager.yml 里的 message: '{{ template "wechat.tmpl" . }}' 不是直接写死的字符串,而是引用外部模板文件。这个 wechat.tmpl 得单独存在,而且路径必须和 alertmanager 启动时 --config.file 指定的相对路径一致。
常见的几个坑:
- 把模板内容直接塞进
alertmanager.yml的message字段里,导致解析失败。 - 模板文件编码不是 UTF-8(尤其是 Windows 编辑后容易带上 BOM),
alertmanager启动时会报parse error。 - 模板里用了
{{ .Labels.instance }}这类变量,但实际告警根本没带instance标签(比如规则里没加by (instance)),渲染出来为空,企业微信直接拒收。
告警规则触发了但没推送?先查 alertmanager 的 /status 页面
访问 http://alertmanager-host:9093/status,重点看三块:
- 「Active Alerts」列表里有没有你预期的告警——如果没有,说明
prometheus根本没把告警发过来。这时候去检查prometheus.yml里的alerting.alertmanagers.targets,看地址和端口是不是写对了(端口默认是9093,不是9090)。 - 「Silences」下面有没有误配的静默规则——比如设置了
starts at为未来时间,或者匹配了所有alertname但忘记关闭。 - 点进某条活跃告警,看「Receiver」列是否显示
wechat——如果显示的是none,说明路由匹配失败了。回去检查alertmanager.yml里的route.receiver和receivers.name是否完全一致(大小写敏感)。
企业微信机器人 vs 自建应用:该选哪个?
别用群机器人(就是那种 webhook URL 形式的)。它不支持 to_party、agent_id 等字段,只能往固定群里丢消息,没法按部门或人员做分级告警。值班场景下,必须走「自建应用」的方式,原因很简单:
- 可以精确控制推送范围(
to_party或touser)。 - 支持消息卡片(
msgtype: news),能直接展示指标趋势图的链接。 - 可以设置回调地址做告警确认,比如点击按钮自动标记“已处理”。
- 企业微信后台能看到每条消息的送达状态,方便事后审计。
另外提一嘴:自建应用的 api_secret 每次重置都会失效。改完之后务必同步更新 alertmanager.yml 并执行 reload,否则前面做的所有配置都白搭。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。