凌晨两点十七分,简易我的站实手机突然震个不停。不是时监闹钟,是简易UptimeRobot的推送——公司官网挂了。我揉着眼睛爬起来,站实打开电脑,时监ping了一下域名,简易丢包率100%。站实后台SSH连不上,时监机房那台老服务器估计又死机了。简易那晚我蹲在客厅地板上,站实用手机热点连上云控制台,时监强制重启,简易花了四十分钟才恢复。站实第二天一早,时监老板轻描淡写地说了句“下次快一点”。
那次之后,我决定给自己写个简易的监控工具。不整那些复杂的Prometheus+Grafana架构,就一个Python脚本,跑在一台树莓派上,每三十秒请求一次网站首页。逻辑很简单:发一个HTTP GET请求,看返回的状态码是不是200。不是200,就发一封邮件给我。连续失败三次,再发一条短信——用的是腾讯云的短信接口,一条五分钱。
脚本本身不到一百行。用requests库发请求,用schedule库做定时任务,错误日志写到本地文件。没用什么消息队列,也没上容器,就一个nohup挂后台跑着。树莓派放在客厅电视柜下面,插着网线,旁边放了个小风扇散热。它已经跑了四个月没重启过,比公司那台动不动就内存溢出的云服务器稳定多了。
后来我发现只看状态码不够。有一次网站返回200,但页面内容是个错误提示——数据库连接失败,前端却兜底渲染了个空壳。我改了下脚本,除了检查状态码,还会抓取页面上某个特定关键词,比如首页底部的版权文案。如果关键词丢了,照样报警。这招帮我抓出过两次被篡改的页面,黑客把首页换成了赌博广告,但状态码还是200,要不是关键词校验,根本发现不了。
再后来,我加了响应时间统计。每次请求记录耗时,超过五秒就警告一次。别小看这个数字,有个客户的网站就是慢,平均响应八秒。用户早就跑光了,他们自己还浑然不觉。我用这个监控数据把报告甩到他们微信群里,才推动他们换了服务器。现在响应时间稳定在一点五秒以内。
这套简易系统的成本,算下来每个月不到十块钱电费加短信费。对比那些动不动就按节点收费的商业监控服务,它简陋得像个玩具。但它管用,而且我能完全掌控它——想加什么检查项,改几行代码就行。上周我给脚本加了推送通知,通过Server酱发到微信上,比邮件更及时。
说到底,网站监控拼的不是工具多高级,而是你有没有真正关心你的网站。那台树莓派现在还蹲在电视柜底下,指示灯一闪一闪的。我偶尔会蹲下来看它一眼,心里踏实。毕竟,半夜被手机吵醒总比第二天被老板叫去办公室强。