微信告警设置:让重要消息不再错过

微信告警设置:让重要消息不再错过

你是不是也遇到过这种情况?半夜服务器出问题,监控系统发了十几条通知,可你早上醒来才发现微信群里的消息早就被刷屏了。等排查完故障,老板的脸色已经比日志还难看。其实,只要花几分钟做好微信告警设置,就能把关键信息推送到手机眼前。

为什么用微信做告警

大多数人手机不离身,微信几乎是打开频率最高的应用。比起邮件或者短信,微信消息的到达率和查看速度都更快。尤其是值班期间,把系统异常、订单超时、接口报错这类事件通过微信实时推送,响应速度能提升一大截。

用企业微信实现告警推送

个人微信不支持直接接入API,但企业微信可以。登录企业微信后台,创建一个“应用”,比如取名叫“运维告警”。在应用详情页找到“接收消息”配置,启用API接收,并复制Webhook地址。

假设你的监控脚本是Python写的,发送告警只需要一段简单的HTTP请求:

import requests

webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-key-here"

data = {
    "msgtype": "text",
    "text": {
        "content": "【紧急告警】数据库连接失败\n服务名称:order-service\n时间:2024-04-05 03:21:10"
    }
}
requests.post(webhook_url, json=data)

这段代码跑起来后,告警信息就会出现在你设定的群聊里。你可以把这个Webhook加到Zabbix、Prometheus、自研系统的通知模块中。

自建中转服务更灵活

如果你不想用企业微信,也可以自己搭个中转服务。比如用一台云服务器跑一个轻量接口,接收到POST请求后,自动调用微信模板消息API推送给指定用户。这种方式需要申请微信公众号,并通过模板消息功能发送。

模板消息有个好处:即使用户关闭了公众号会话提醒,也能收到通知。适合用于定时巡检报告、每日交易汇总这类非即时但重要的信息。

避免告警轰炸

曾经有同事把日志级别设成DEBUG,结果凌晨三点发了两千多条“文件上传开始”“文件上传结束”,整个团队都被吵醒。合理的告警策略很重要。建议按等级划分:

  • ERROR级:立即推送微信
  • WARN级:聚合后每小时发一次汇总
  • INFO级:只写日志,不通知

还可以加入去重机制,比如同一个接口连续5分钟报错,只发第一条,后续合并为“该问题已持续发生N次”。

测试别偷懒

配置完别忘了测试。手动触发一条测试消息,看看格式是否清晰、时间戳有没有显示、链接能不能点开。曾经有人把告警内容写成“系统异常”,既没说明哪台机器,也没留联系方式,接收的人只能干瞪眼。

一条好的告警信息应该像外卖备注:“重启失败,主机IP 192.168.3.102,负责人@张伟,联系电话138****1234”。

微信告警设置不是一次性任务。每隔一段时间检查下Webhook是否失效,密钥有没有过期。毕竟,最危险的不是系统出问题,而是你根本不知道它出了问题。