微信号:gh_c699791d0cc9

介绍:HULK是360的私有云平台,丰富的一线实战经验,为你带来最有料的技术分享

老司机“四招”带你玩转运维

2016-10-14 18:16 哲爷

女主宣言:

发了这么多的”技术文”,小主觉得有必要发个“理论文”,像武功修炼一样,既要有招式,也要有内功;本次特邀有七年工作经验的运维工程师来给Hulk公众号写点东西,一贯的作风,还是主打的实用文,重点介绍对这个岗位的认识和积累,先来一篇如何高速有效的处理线上故障的小文,希望能对你有益。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!


前言

每一个运维工程师都会遇到突发紧急故障的情况,有些时候核心的故障分秒必争,毕竟你面对的可能是数以亿计的用户,服务每停一秒钟可能损失的就是五道口的一个两室一厅。

作为运维工程师,除了有泰山崩于前而不变色的处变不惊的心态外,必须要掌握好一套处理问题的方法论,坚定不移的执行下去,只有这样,才能在故障发生的时候,潇洒自如的解决核心的问题。


前言

哲学的角度上来讲,医生给人看的是病,故障发生的时候,我们也是在给机器看病。所以,这套方法论,我总结出来就是“望闻问切”。


“望其五色,以知其病。”

这里的关键在收集宏观的信息,获取故障的表面现象并综合判断。


“为将之道,身临战场,务要眼观四处,耳听八方”,通常情况下,需要获取到网络系统,域名系统,负载均衡系统,Web系统,后端数据库系统,缓存系统,其他各种业务逻辑支撑系统的状态,切忌获取一个信息之后,不理其他问题,一头扎入钻牛角尖开始分析。



“闻而知之者,闻其五音,以别其病。”

机器和系统不是人,不能指给你它哪里不舒服,我们需要让他们能告诉我们自己的表征病情,这就需要一套功能丰富,易用、稳定的监控报警系统。


实时的报警才能第一时间告知我们机器和系统发生了问题,详细的报警数据能给后续的处理提供强有力的内容支持,分级的监控报警机制能让运维工程师抽丝剥茧一样排除干扰因素,自上而下的第一时间找到问题所在。

“闻”最高级体现在故障预警系统,能够根据系统的业务模型,增长量和其他基础数据,训练出预警模型,在故障发生之前通知给我们是我们最理想的场景。


“问而知之者,问其所欲五味,以知其病所起所在也。”

在获取到各个系统状态,收到报警后,我们对故障已经有了足够的数据支撑,并作出初步判断。


为了巩固我们的判断,需要对定位到的问题做详细的追踪,即所谓的“非问无以广识”。


比如询问开发团队,某个功能是否刚刚上线;询问某个运维人员,是否对配置做过变更,或者对架构做过调整;询问网络团队是否受到攻击;甚至询问产品和运营当前是否开始了什么推广。


如果是变更引起的问题,可否通过快速回滚可以解决,如果不可以,开发和运维团队需要制定如何的应对策略以尽快恢复当前服务。


“切脉而知之者,诊其寸口,视其虚实,以知其病,病在何脏腑也。”

通过“望、闻、问”三步,大部分宏观的故障基本上已经定位甚至找到解决方案了,如果是系统级微观因素引起的故障,比如OOM,磁盘损坏,端口占用,死锁甚至频繁重启,那就需要我们掌握操作系统的常用Profiling、Tracing和OS Tuning工具来“切脉”了。


这里是最能体现我们运维工程师价值的地方,我们必须熟练使用诸如{io,mp,vm}stat,sar,{l,s,d}trace,oprofile等命令行工具,通过分析输出和日志来解决细节问题。



总结

除了上述的方法,还需要注意的就是随时将你的核心操作与其他工程师double check,确保不会引起“故障”上的“故障”;每到一个阶段定期向相关的核心团队和自己的boss告知进度,确保处理信息同步;每次故障恢复完后,静下心来,反思一下处理的流程,提高经验和效率;以及基于故障产生的原因,设计如何更优化当前的系统等。


想想当你按下回车掌控一切的时候,说不定迎接你的就是boss们鼓励的目光、以及围绕在周围曾经不可一世的开发团队或是感激或是敬佩的掌声呢。





扫描下方
二维码
了解更多内容



 
HULK一线技术杂谈 更多文章 MongoDB全自动容灾集群节点角色解析 一种etcd容灾备份的设计与实现 YUM变量缺失导致的问题小记 Docker遇到Syslog的踩坑小记 中国网络“野蛮生长”的20年
猜您喜欢 用Golang写一个搜索引擎 (0x04) 一个Android程序员的自我修炼 GMTC-2016所感 Facebook如何采集其Android应用性能数据 web前端规范目的