服务器半夜宕机无人知?TP6.0 Prometheus监控告警与企业微信通知【值班】

作者:技术拾光

时间:2026-07-18

浏览:364

服务器半夜宕机无人知,根源常在于Alertmanager未成功推送告警至企业微信。需确保可信IP、api_secret及请求体格式正确,注意corp_id为12位字符串、to_party填部门ID、模板文件独立且UTF-8编码。排错应查看/status页面确认告警路由,值班场景推荐使用自建应用实现分级推送。

文章目录

服务器半夜宕机没人知道——这种场景在运维圈里太常见了。问题的根源往往不是监控没配,而是告警链路断在了最后一步: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,否则前面做的所有配置都白搭。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章