大年初二,我在丈母娘家蹲厕所修服务器:运维人的春节“保命”全攻略(附避坑+急救手册)
大家好,新年快乐。
今天是年初二,按习俗是“回娘家”的日子。不管你现在是被七大姑八大姨围着问工资,还是躲在角落里瑟瑟发抖地盯着手机屏幕,咱们现在的状态估计都差不多——人虽然在走亲戚,魂儿早就飞回机房了。
刚才吃饭的时候,兜里手机猛地震了一下,我那拿筷子的手瞬间就抖了,心率直接飙到120。旁边二舅还以为我帕金森犯了,其实我只是被那个该死的Zabbix告警弄出了PTSD。哪怕最后一看只是个无关痛痒的“磁盘使用率超过85%”,那种那一瞬间的惊悚,只有咱们干运维的懂。
别笑,我知道你包里肯定背着电脑。老婆骂你“跟电脑过日子去吧”,亲戚看你像看外星人,但咱们心里苦啊。这几天,全中国都在狂欢,咱们是在渡劫。
既然躲不开,那咱就聊聊,在这兵荒马乱的春节期间,怎么靠着背包里那点东西,既能保住系统的99.99%,又能保住咱们在亲戚面前的面子,顺便还能偷摸睡个好觉。
一、 出门前的“战备检查”:背包里装的不是电脑,是尊严
很多人觉得,运维不就是带个笔记本吗?错。春节期间的背包,那就是咱们的武器库。
先说电脑。别拿那种续航只有俩小时的游戏本出来现眼,这几天你找不到插座的概率太大了。我这次背的是那台跟了我五年的ThinkPad,虽说又厚又沉,但它皮实,关键时刻能砸核桃,也能扛住熊孩子的暴击。
重点来了,你包里有没有这两样东西?
一个是4G/5G的随身WiFi,或者一张备用的物联网流量卡。千万别信亲戚家的WiFi。你知道我遇到过什么情况吗?前年去我大姨家,那路由器估计是十年前办宽带送的,连接数一超过5个就死机。那天正好赶上流量洪峰,我这刚连上VPN,屋里小孩一开王者荣耀,我这边SSH直接断连。那一刻,我想死的心都有。所以,一定要有自己的独立网络,这是保命的根本。
另一个是USB转串口线(Console线)。这玩意儿平时用不上,现在云服务器多了更用不上。但万一呢?万一你就在本地,万一那个物理机房就在你隔壁县城,万一远程彻底失联需要你肉身去现场插交换机呢?这根线不占地儿,带上它,你就是专业。
还得提一嘴VPN客户端。别只装一个。公司的VPN平时稳得一笔,一到春节这种关键时刻就爱掉链子。OpenVPN装上,EasyConnect装上,向日葵、TeamViewer也都备着。我还习惯在公网上留个极简的跳板机,哪怕所有图形界面工具都挂了,只要能SSH连上跳板机,我就能通过端口转发跳回内网。这叫狡兔三窟。
二、 别信开发的“鬼话”,封网就是封网
腊月二十三之后,我就在公司群里发了疯狗警告:谁也别想动生产环境。
我知道,总有那么几个开发兄弟,在大年三十前跑来跟你说:“哥,我就改个配置文件,真的不动代码,顺手的事儿,为了用户体验。”
这时候,你一定要硬气。你就当他是要来拆你家房子的。
墨菲定律在春节是有加成的。平时你改个Nginx配置,reload一下也就完事了。春节期间,你这一reload,可能就会因为某个潜伏已久的语法错误导致服务起不来,然后你就会发现备份文件也是坏的,接着回滚失败,最后不得不把还在吃年夜饭的CTO喊起来。
我有个血泪教训。几年前,有个做支付网关的哥们,心软答应开发在除夕下午更新了一个“优化日志格式”的补丁。听起来人畜无害对吧?结果那个补丁里有个句柄泄露的Bug。平时流量小看不出来,除夕晚上八点,红包流量一来,服务器直接因为Too many open files挂了。那天晚上,全中国都在抢红包,他在机房里对着黑屏幕流泪,连春晚的《难忘今宵》都没听上。
所以,记住我的话:封网期间,ReadOnly就是咱们的护身符。 除非是那种如果不改公司立马倒闭的一级故障,否则任何变更一律驳回。这不是刁难,这是为了让大家都能安稳吃顿饺子。
三、 告警配置的“艺术”:别让狼来了毁了你的睡眠
这几天,咱们的宗旨是:只要业务没挂,核心链路通着,其他的回头再说。
平时咱们为了监控到位,恨不得CPU跳一下都发个短信。但这几天不行,你得学会“抓大放小”。我把告警分了个级,大家可以参考一下:
- 一级告警(天塌了): 比如核心数据库宕机、负载均衡器无响应、支付接口成功率跌破90%。这种告警,直接接入电话通知(PagerDuty或者云厂商的语音通知),哪怕我喝断片了也得把我炸醒。
- 二级告警(有点疼但死不了): 比如某台非核心节点的应用服务器OOM重启了(K8s自己会拉起来),或者磁盘空间到了85%(只要不是日志盘疯涨,撑个三五天没问题)。这种告警,发个钉钉或飞书消息就行,静音,等我睡醒了或者蹲坑的时候再看。
- 三级告警(纯属骚扰): 比如常规的定时任务报告,或者一些无关痛痒的网络抖动。直接屏蔽,过年期间我看都不看。
这里有个小技巧。如果你用的是Zabbix或者Prometheus,建议搞个“春节静默规则”。把那些平时为了调优而设置的敏感阈值,临时调高一点。比如CPU负载,平时2就要报警,现在调到5再报。我们要的是“活着”,不是“健康”。
四、 当故障真的来临:春节期间的“急救”原则
怕什么来什么。万一就在刚才,你正给长辈敬酒呢,电话响了,核心服务502了。怎么办?
第一条原则:不要慌。
我知道这很难。旁边七嘴八舌的,电视机声音震天响。这时候你得找个安静的房间(厕所通常是最好的选择),深呼吸。哪怕系统全崩了,地球照样转。
第二条原则:优先恢复,而不是定位问题。
平时咱们讲究根因分析(RCA),要扒代码看哪一行错了。但春节期间,咱们只有一个人,手里工具也不趁手。这时候,最重要的指标是MTTR(平均恢复时间)。
别去查日志看是哪个变量空指针了,先试试重启。
重启不行?回滚到上一个版本。
回滚不行?切断非核心流量(降级)。
哪怕你写个脚本每分钟重启一次服务来硬抗内存泄露,只要能撑到初七大家回来上班,那你就是英雄。
举个真实例子。有一年春节,Redis集群因为流量突增爆了。那时候去分析热Key根本来不及,而且也没那个环境。我直接把那个耗流量最大的“即时排行榜”功能给切了(改了前端配置不展示)。用户顶多就是看不到谁是第一名,但不影响他们下单发红包。这就叫丢车保帅。只要核心业务(收钱、核心展示)是好的,其他的都可以牺牲。
第三条原则:该摇人时就摇人。
别逞强。如果十分钟内你搞不定,或者你发现问题超出了你的认知范围(比如被大规模DDoS攻击,或者机房光纤被挖断了),立马摇人。在群里喊一声,没准哪个研发兄弟正无聊刷手机呢。多个人多双眼睛,解决问题的速度是指数级提升的。千万别自己闷头搞,最后把小火搞成大灾难,那样锅就真的甩不出去了。
五、 那些不得不说的“骚操作”
既然是干货,那就得来点具体的。这几天在恶劣环境下办公,有几个命令和工具你得备好。
1. 应对网络不稳定的神器:tmux 或 screen
亲戚家的网你是知道的,时断时续。你要是正在跑一个耗时很久的脚本(比如数据库备份或者日志分析),SSH突然断了,那脚本也就挂了,搞不好还会留下僵尸进程。
一定要用 tmux。连上服务器第一件事,先敲个 tmux。哪怕网断了,你的会话还在服务器上跑着,等你下次连上去,tmux attach 一下,画面完美恢复,就像什么都没发生过一样。这绝对是低延迟、丢包环境下的救命稻草。
2. 快速排查问题的“三板斧”
当你在那样嘈杂的环境下,脑子是不转的。你需要把这些命令刻在肌肉记忆里:
- 看谁在捣乱:
top -c(看CPU和具体命令),进去了按P按CPU排序,按M按内存排序。 - 看网络堵没堵:
netstat -nat | grep ESTABLISHED | wc -l,或者高端点用ss -s。要是连接数暴涨,多半是被攻击了或者流量突增。 - 看日志别用vim: 千万别手贱用
vim去开几G的日志文件,服务器会死给你看。用tail -f xxx.log | grep "Error",或者grep -C 5 "Exception" xxx.log来看上下文。
3. 那些 dirty 但好用的脚本
我电脑里存着几个脚本,专门应对突发状况。
比如“清理磁盘脚本”:自动扫描 /tmp 和日志目录,把超过3天的日志全部清空(注意是清空 > file.log 而不是删除 rm,避免句柄不释放)。
比如“自动拉起脚本”:写个死循环监控核心进程,一旦没了立马拉起来。虽然这很low,但在没人能修bug的时候,它能保证服务活着。
六、 如何面对亲戚的“灵魂拷问”
最后,聊聊咱们的心理建设。
这两天走亲戚,除了系统告警,最怕的就是七大姑八大姨问:“你在外面是做什么工作的呀?”
你要是说“运维”,他们听不懂,还会觉得你是运货的。
你要是说“工程师”,他们会问你是修桥还是修楼的。
你要是说“管服务器的”,完了,下一句必定是:“正好,我家电脑有点卡,那是服务器吗?你给修修。”
经过我多年的摸爬滚打,我总结了一套“春节特供身份定义”,供大家参考:
- 面对有点文化的叔叔阿姨: “我是做互联网安全的,保障大家微信发红包不卡顿、刷抖音不黑屏。” ——听起来很高大上,而且跟他们生活息息相关,瞬间收获敬佩的目光。
- 面对完全不懂行的老人家: “修大电脑的,那种机房里一排排特大的电脑。”
- 面对熊孩子: “我是管游戏服务器的,你要是再闹,我就封你号。”(这招有奇效,虽然我根本没权限封他的王者荣耀,但他不懂啊)。
当然,不管怎么解释,最后大概率还是逃不过修电脑的命运。
我的建议是:随身带个U盘。里面装个360(虽然平时咱们鄙视它,但对付亲戚那满是弹窗和流氓软件的电脑,它是以毒攻毒的神器)、一个纯净版的Windows镜像、一个PE工具箱。
甚至,有时候你只需要把他们电脑重启一下,清理一下桌面图标,或者把浏览器的hao123主页改回来,他们就会觉得你是神。这时候,你再顺手给他们手机连上你的WiFi,帮他们清理一下微信缓存,这顿饭你就稳坐C位了,连二舅都要给你倒酒。
七、 玄学与心态:敬畏之心
干咱们这行久了,多少都有点迷信。春节这几天,有些规矩咱还得守。
- 别吃“挂面”: 咱们听不得“挂”字。
- 别吃“黄花菜”: 懂的都懂,黄花菜都凉了。
- 远离“芒果”: 忙啊,不想忙(芒)。
- 服务器机柜上的旺旺雪饼: 那是供品,谁吃了我跟谁急。
还有最重要的一点:闭嘴。
千万不要在群里立Flag。什么“今年挺稳的”、“没什么流量”、“看来能睡个好觉”。只要这话一出,不出半小时,必有妖孽。保持沉默,保持敬畏,默默祈祷。
写在最后
其实,大年初二还得背着几十斤重的包,还得时刻盯着群消息,确实挺累的。看着窗外烟花爆竹,听着屋里麻将声响,有时候也会想,为什么选了这行?
但转念一想,咱们就像是这数字世界的“守夜人”。
当大家都在快乐地抢红包、刷视频、看直播、打游戏的时候,是咱们在背后扛着那如洪水般的流量。那个绿色的 “System Normal”,就是我们给这个世界最好的新年礼物。哪怕没人知道我们在厕所里敲过代码,哪怕没人知道我们在高速上重启过服务。
既然选择了这一行,咱就把它干好。
如果你现在正守在电脑前,或者像我一样把电脑放在饭桌旁,不妨给自己倒杯酒(或者可乐)。
这一杯,敬那台永不宕机的服务器。
这一杯,敬那些没日没夜的监控告警。
这一杯,敬每一个坚守岗位的运维人。
希望大家的PagerDuty、Prometheus、Zabbix永远保持沉默。
希望所有的日志都没有Exception。
希望所有的数据都已落盘。
总结一下我的春节生存口诀:
该吃吃,该喝喝,电脑背好别甚至。
告警分级要做好,无关痛痒别烦躁。
亲戚问起干什么,修修电脑最快乐。
遇事千万不要慌,重启回滚是良方。
网络神器备两套,流量充足心情好。
不立Flag不嘴炮,稳稳当当过大年。
好了,不说了,我得赶紧出去了,丈母娘喊我吃饺子了。刚才偷偷瞄了一眼,那台有点抖动的虚拟机好像稳住了。
祝大家新年快乐,开工大吉,全年无故障,年终奖翻倍!
如果你觉得这篇吐槽/实录对你有那么一点共鸣,或者想围观更多运维一线的摸爬滚打、避坑指南,欢迎关注我的公众号:
公众号:运维躬行录
个人博客:躬行笔记
转发到朋友圈,保佑你今年服务器不宕机,所有Bug绕道走!