一家客户的网站周末挂了:技术方上周五升级了段脚本,周末起首页白屏,直到周一客服接到投诉才知道。算下来白屏了整整一天多,周末正是海外客户浏览的高峰。网页前端开发做完上线只是开始,没人盯着的网站,出问题永远比你知道得晚,监控就是替你值班的眼睛。
监控什么
四个东西值得盯,覆盖了绝大多数线上事故:
- JS报错:页面脚本一旦出错,功能可能全瘫,报错的第一时间要有人知道;
- 接口失败:表单提交不通、数据加载不出,这类故障用户感知最直接;
- 白屏和打不开:最极端的情况,用定时拨测每几分钟访问一次首页,连续失败立刻告警;
- 性能下滑:加载时间突然变长,多数是有东西出问题了,是前几种问题的前兆。
四项里最便宜也最容易被忽略的是拨测,一个定时访问的小服务,每月几十块的成本,白屏这类事故全靠它兜底。监控的配置半天就能做完,难的不是技术是意识,多数网站挂在无人知晓的角落里,不是没有工具,是没人想到要装,装上就多一双眼睛。
告警要接到人身上
监控工具一大堆,告警发到没人看的邮箱等于没监控。配置时认准一条:告警必须推送到有人即时查看的地方,微信、短信或者钉钉群,并且要有升级机制——半小时没人认领就通知第二个人。工具选型上,报错收集用Sentry这类现成服务就很好,免费额度对中小企业站完全够用,自己攒监控的时间成本远高于订阅费。配置完别急着收工,故意触发一次测试告警,确认通知真的能落到手机上,这条网页前端开发的收尾动作千万别省。
报警之后的正确动作
第一反应永远是回滚不是排查。线上故障每多挂一分钟就多一分钟的损失,先把版本退回上一个正常状态恢复服务,再慢慢找原因。这就要求每次发布都保留上一个可用的版本,随时能一键退回。有回滚习惯的团队和没有的团队,同样的故障,恢复时间差着十倍。把回滚演练纳入每季度的例行事项,真出事时手才不会抖,应急能力从来是练出来的。演练一次的成本,抵得上事故一小时的损失。
两条建议:问一下你的开发商网站现在有没有监控和告警,没有的让补上,这是小钱办大事的典型项目;每次上线都留下发布记录和回滚方案,把这个习惯写进外包合同。比格网络托管的站点都带拨测加报错收集,多数故障我们比客户早知道,这份从容就是监控买来的。