|
上周三下午四点十七分,风险通报运维老张在群里甩了一张截图。风险通报数据库连接池爆了,风险通报红色告警铺满整个屏幕。风险通报他配了句话:“谁动过生产环境的风险通报连接配置?”没人吭声。二十分钟后,风险通报订单服务开始超时,风险通报客服电话被打爆。风险通报事后复盘发现,风险通报是风险通报一个新来的后端在调试时顺手把最大连接数从200改成了20。他觉得“本地跑得挺好”。风险通报 这事不是风险通报孤例。我翻过近半年的风险通报故障记录,七成以上的风险通报生产事故都跟“顺手改一下”有关。改配置、风险通报改路由、改权限,甚至只是改了个日志级别。没人走变更流程,没人通知上下游。大家默认“这么小的改动能出什么事”。可系统偏偏就死在这种小改动上。 风险通报不是写报告。它更像一张急诊单——谁在什么时候动了什么,现在哪里在流血,需要谁立刻过来按住。我见过最离谱的一次,一个中间件团队在凌晨两点发邮件说“昨晚十点升级了证书”,而业务方直到早上七点用户无法登录才知道这事。中间九个小时,没人知道证书过期了,没人知道升级失败了,没人知道回滚脚本写错了路径。 通报的第一句话必须让人坐起来。别写“兹有XX系统于XX时间发生异常”,直接写“支付回调从14:03开始全部失败,每分钟丢37笔订单”。数字、时间、影响面,三样东西缺一不可。上周有个存储故障,通报里写“部分节点响应缓慢”,结果运维以为是慢查询,业务以为是网络抖动,实际是磁盘写满了。等到有人去看监控,已经过去了四十分钟。 谁该收到通报?不是抄送全公司。是那些“看了之后会立刻动手”的人。数据库连接池爆了,通报发给所有后端和DBA就够了,别拉上市场部。但如果你不确定谁会受影响,宁可多圈几个人。我见过一个缓存集群故障,通报只发了基础架构组,结果推荐服务、搜索服务、用户画像服务全部雪崩——因为它们共用同一套缓存。没人想到要通知业务方。 通报里要写清楚“现在能做什么”。别只说“正在排查”。要说“DBA正在主库执行kill session,预计三分钟释放连接;业务方暂时不要重试支付,等通知”。上个月一次消息队列积压,通报里写了“消费者已扩容到20个实例”,但没写“积压还在涨,因为生产端速率是消费端的三倍”。结果业务方以为快好了,继续往队列里灌数据。 时间线要精确到分钟。别写“下午”,写“15:22”。别写“大约半小时前”,写“15:07发现第一个超时”。我习惯在通报里放一行“下一次更新:16:00或更早”。这样收通报的人知道什么时候该回来看。没有下一次更新时间的通报,等于告诉别人“别等了,我也不知道什么时候好”。 最后说个反直觉的:通报要带点情绪。不是让你骂人,是让你说人话。写“这个改动没有经过任何评审,直接上了生产”比写“变更流程未被执行”更有冲击力。写“我们到现在还没找到是谁改的”比写“根因仍在定位中”更让人紧张。风险通报的目的不是免责,是让所有人知道现在很危险,需要一起把火扑灭。 老张那次故障,最后是回滚了配置了事。但他在通报里加了一句:“下次谁再直接改生产,我先把他账号封了。”没人觉得这话过分。因为大家都清楚,那二十分钟里丢掉的订单,够买一百杯咖啡了。 |