夜班值守,真正让人头疼的往往不是故障本身,而是故障发生之后,信息在人与人之间传递时产生的混乱。系统报警了,A同事先接手排查了一部分,到了交接班时间,B同事接着处理,可B对之前做过什么完全没有头绪,只能重新问一遍。业务部门不断来催进度,每催一次,值班的人就得把当前情况从头复述一遍。等到故障终于解决,复盘会上却发现谁也讲不清楚当时到底执行了哪些操作、验证了哪些环节、还有哪些事项没有收尾。这种局面,说到底不是技术能力的问题,而是缺少一张让大家信息同步的问题记录表。
这张记录表并不需要做成功能繁重的工单系统,一张结构清晰、字段固定的表格就完全够用。核心在于覆盖故障处理的全流程。最基本的字段应当包括:发现时间、报告人、影响范围、故障现象、初步判断、处理步骤、处理结果、遗留事项以及是否需要后续跟进。影响范围要写清楚是哪个网站、哪个页面、哪台服务器,还是整个服务都无法访问。初步判断记录的是值班人员最初的推测,哪怕不准确也没关系,后续可以根据实际情况修正。处理步骤必须按时间顺序记录,每一步做了什么操作、是否产生了效果,都要一一写明。处理结果是故障恢复后的最终状态,而遗留事项则是那些暂时未能解决、需要白天或下周继续关注的隐患。最后再标注是否需要专人跟踪,避免问题不了了之。
填写记录表的时机同样至关重要。很多人习惯等故障完全处理完再补写,结果一旦忙起来,细节就被遗忘,只能靠回忆拼凑。正确的做法是边处理边记录,每完成一个操作就顺手写下一行。比如先写“10点15分,检查nginx日志,发现大量502错误”,再写“10点20分,重启php-fpm服务,观察5分钟”。这样做的好处非常明显:即使中途换人,接手的同事只要看一眼记录表,就能清楚知道前面尝试过什么、结果如何,完全不需要打断正在排查的人。而且边写边整理思路,有时候写着写着反而能发现之前被忽略的线索。
记录表积累一段时间后,它的价值会远远超出单次故障处理本身。建议每个月花半小时把记录表翻一遍,将重复出现的问题归类。比如这个月有三张单子都指向数据库连接数过高,那就说明这不是偶发情况,而是需要调整配置或增加监控。再比如某类问题总是出现在凌晨三点,那就要考虑是不是定时任务和备份脚本之间存在冲突。这种回顾不需要多么高深的技术分析,只要把相似问题放在一起对照,规律自然会浮现出来。日积月累,这些记录就会变成一本属于自己团队的故障排查手册,新人来了直接翻阅记录表,比听老同事口头讲述经验更加系统、更加准确。
举一个实际的填写示例。假设凌晨两点网站首页无法访问,值班人员收到告警后,在记录表里这样写:发现时间“02:00”,报告人“监控系统告警”,影响范围“官网首页及商品详情页,后台管理正常”,故障现象“页面返回504超时”,初步判断“后端应用服务无响应”。处理步骤里依次记下“02:05 登录服务器,查看应用进程,发现进程仍在运行”“02:10 检查数据库连接池,发现连接数已满”“02:15 重启数据库服务,释放连接”“02:20 页面恢复访问,持续观察中”。处理结果写“故障恢复,页面访问正常”。遗留事项写“数据库最大连接数配置偏低,建议白天调整参数并排查慢查询”。后续跟进标注“是,转白天运维组处理”。这样一张单子,第二天交接时不需要多说一句话,所有人都能看懂发生了什么。
需要说明的是,问题记录表并不等同于正式的运维日志。记录表是故障处理过程中的实时笔记,追求的是快速、准确、实用,格式可以相对灵活。正式的运维日志则是在故障结束后整理归档的文档,需要补充背景分析、根因结论、预防措施和责任人,结构更加完整,用词更加严谨。记录表是素材,运维日志是成品。先有记录表,才能写出高质量的运维日志。如果跳过记录表直接写日志,往往会遗漏关键时间点和具体操作。所以日常值班时,把记录表当成随手就写的草稿纸,故障结束后再花时间整理成正式的运维文档,整个团队的沟通成本会明显降下来。




