微信接收网络告警:不用守着电脑,手机一震就知道服务器挂了

公司官网突然打不开,客户开始投诉,你还在地铁上——这种事谁没遇到过?以前得连VPN、开终端、查日志,等你赶到公司,故障都自愈了。现在,把网络告警直接推到微信里,手机一震,就知道是交换机掉线、Nginx 502 还是 MySQL 连接池爆了。

为什么选微信?

不是因为微信多高级,而是它最接地气:不用装新App、不用记新账号、群聊/私聊/公众号全支持,运维同事、开发、值班经理都能第一时间看到。而且,微信消息打开率接近100%,比邮件强太多。

三步搞定微信告警(以Zabbix为例)

Zabbix 是很多中小团队的监控主力,它原生不支持微信,但加个脚本就成:

1. 注册一个企业微信,创建「告警机器人」,获取 Webhook 地址(形如:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx);

2. 在 Zabbix Server 上写个 Python 脚本 /usr/lib/zabbix/alertscripts/wechat.py

#!/usr/bin/env python3
import requests
import sys

webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"
data = {
    "msgtype": "text",
    "text": {
        "content": f"【{sys.argv[1]}】\n{sys.argv[2]}\n时间:{sys.argv[3]}"
    }
}
requests.post(webhook, json=data)

3. Zabbix 告警媒介里新增「微信通知」,类型选「脚本」,脚本名填 wechat.py,参数依次填:{ALERT.SENDTO}(其实是标题)、{ALERT.MESSAGE}{EVENT.DATE} {EVENT.TIME}

其他监控也能接

Prometheus + Alertmanager?配个 webhook_configs 指向一个中转服务就行;Nagios、Cacti、甚至自己写的 ping 脚本,只要能执行 shell 或发 HTTP 请求,就能往微信推。关键是把告警内容精简:别一股脑塞200行日志,只留关键字段——主机名、错误码、发生时间、建议动作(比如「重启 nginx.service」)。

小技巧防打扰

值班期间才推送?用企业微信「应用可见范围」+「审批流」控制权限;非工作时间只发严重告警?在脚本里加判断:if 'PROBLEM' in sys.argv[2] and '严重' in sys.argv[2]: send();想带链接直达 Grafana 图表?把 URL 放进 text.content 里,微信会自动识别成可点击链接。

说白了,微信不是万能胶,但它确实是目前把告警从服务器拉到人手边最快的一条路。试一次,你就会发现:原来半夜三点被电话叫醒,真没必要。