半夜三点,手机突然响了
你正睡得迷糊,床头的手机“嗡”地一震,接着又是一条。睁眼一看,不是推销也不是骚扰,而是两条来自服务器监控系统的短信:
【告警】web01-内存使用率92%!
【告警】db02-主从延迟超300秒!
虽然烦人,但你知道,这比第二天早上发现网站瘫痪要强得多。
为什么非要用短信?微信不行吗?
有人问,现在都用企业微信、钉钉、飞书,为啥还要发短信?关键就在“不可靠环境下的可达性”。
想象一下,公司内网断了,VPN连不上,钉钉收不到消息。这时候,手机只要有蜂窝信号,短信照样能收到。短信不依赖网络服务,也不吃流量,哪怕你在地铁隧道里,也能看到那条红色告警。
告警内容怎么写才不让人抓狂?
别整那些花里胡哨的模板。一条有效的监控告警短信应该直接说清三件事:谁出事、出了啥事、严重到什么程度。
比如这样就很好:
【紧急】app-srv-03 CPU持续超95% 超过5分钟
而这种就让人头疼:
系统检测到异常,请登录平台查看
等我登录?黄花菜都凉了。
别让短信变成“狼来了”
以前有个同事,设置了每台服务器每5分钟报一次CPU使用率。结果一到促销活动,几十台机器齐发短信,他一个晚上被叫醒七次。后来干脆把告警关了,再出事没人知道。
告警要有分级。普通预警可以走邮件或IM,只有P1级故障才触发短信。比如数据库宕机、核心服务无响应、磁盘空间低于10%,这些才值得半夜把你喊起来。
实际配置示例:Zabbix + 短信网关
很多企业用Zabbix做监控,对接短信其实不难。先申请一个短信API服务,然后在Zabbix的“媒介类型”里添加脚本。
比如调用curl发送POST请求:
curl -X POST https://api.sms-provider.com/send \
-H "Content-Type: application/json" \
-d '{"phone": "13800138000", "message": "【告警】$1 $2"}'
再在动作(Action)里设置触发条件,比如问题等级大于等于“高”,就发送短信给值班人员。
别忘了测试和轮班
有家公司配置完短信告警从来没测过。直到真出事,才发现号码填错了,整整两小时没人收到消息。
每月做一次模拟故障,发一条测试短信,确认能收到。同时建立值班表,确保每个人都知道什么时候该自己盯着手机。
小改进,大安心
加个短信告警,成本不高,可能一个月几十块钱短信费。但它能在关键时刻拉你一把。就像家里的烟雾报警器,平时安静得像不存在,可一旦响了,你就知道得立刻行动。
服务器也一样。一条简单的短信,可能是你避免背锅的最后一道防线。