早上刚坐下,咖啡还没喝一口,手机就弹出十几条系统异常通知。你一边点开运维群,一边心里嘀咕:怎么又出问题了?其实这些问题,早就可以不用你亲自盯着。
告警太多,反而容易漏掉重点
很多团队一开始做监控,就是简单粗暴地把所有日志、接口响应时间、服务器负载全都加上报警。结果是,每天收到上百条消息,大多数是“虚惊一场”。时间一长,大家干脆把通知静音,等真出事时才发现错过了黄金处理时间。
我之前待的公司就经历过这种情况。有次数据库连接池被打满,告警短信发了半小时,没人点开看——因为前一天半夜刚因为磁盘空间不足被吵醒三次,全是低优先级提示。这种“狼来了”式的提醒,迟早会出问题。
真正的自动化,是知道什么时候该响,什么时候闭嘴
好的自动化告警不是越多越好,而是要有判断力。比如可以设置规则:只有连续5分钟CPU使用率超过90%,并且同时存在慢查询日志时,才触发高优先级通知。这样既过滤了瞬时波动,也避免了单一指标误判。
在Zabbix或者Prometheus这类工具里,你可以写这样的表达式:
avg_over_time(cpu_usage%5B5m%5D) > 90 and count_over_time(slow_query_count%5B5m%5D) > 10
这条规则的意思是:过去5分钟平均CPU使用率大于90%,并且慢查询次数超过10次,才触发告警。比起单纯看阈值,更贴近真实业务压力。
别忘了给非技术同事留条路
销售系统的订单成功率下降,不应该只发邮件给开发。通过企业微信或钉钉机器人,可以把关键指标异常直接推送到运营群,并附上最近一次发布记录和影响范围说明。
我们试过一个做法:当订单失败率突增20%以上,自动发送一条结构化消息到“订单保障组”,内容包含时间、受影响城市、可能原因(如支付网关超时)、建议动作(回滚版本/联系第三方)。这样一来,前端客服也能第一时间感知问题,而不是等到用户投诉炸锅才反应过来。
从被动响应到主动预防
更进一步的做法,是结合历史数据做趋势预测。比如每个月初报表服务都会卡顿,那就可以提前一天扩容资源,而不是等监控红了再去救火。
我们在Grafana里加了个小脚本,每周一凌晨自动检查上周的内存增长趋势,如果线性外推下周会突破安全线,就提前给负责人发个轻量提醒:“预计三天后内存紧张,请关注”。没有刺耳铃声,也不打扰休息,但足够让人心里有数。
自动化告警的本质,不是让机器代替人干活,而是让人把注意力放在真正需要思考的地方。当你不再被一堆零碎提醒牵着鼻子走,才有空去优化那些“好像有点慢”却又说不清哪儿不对的体验细节。