一、前言 生活、工作中我们做事情是力求做到百分百,还是差不多?面对可能导致小概率发生事故的疏漏,我们是努力弥补还是听之任之,觉得自己运气未必那么坏?看完以下的小文章或许会对你有触动,从而使我们对日常运维工作的态度乃至行为有所改变。 从美国哥伦比亚航天飞机遇难事件到最近日本地震导致核电站爆炸泄露,越来越多的事情都验证着一个定律“如果坏事情有可能发生,不管这种可能性多么小,它总会发生,并引起最大可能的损失。--------墨菲定律”。本文仅从技术运维角度出发来阐述“墨菲定律同样存在于运维中”以及我们应该采取的对策。 二、情景案例 意外,总在发生! 情景一: 2009 年7月,某公司机房外包工程队拔错外网核心交换机的出口光纤,造成整个机房的外网流量中断。他们的运维人员给出了明确的光纤号码,认为外包工人只要按照要求操作,绝不可能拔错,但事实是外包人员正好拔错了,把正在跑业务流量的2 条光纤拔了下来。 情景二: 2010 年8 月,某公司汇聚交换机引擎主控板故障,本来是具备2块控制板,可以实现主备切换,但实际上设备并未切换。更巧的是,机房的备机被送到厂商进行年度检修,因此也没有备机可用来替换故障机,造成业务受到影响。 情景三: 2010 年11 月,某公司机房的主UPS元器件发生爆炸,备UPS本应承接机房电力,但恰好备UPS的电力容量与主UPS不符,无法承接所有服务器的电力供应。造成400 多台服务器掉电。更巧的是,网管质量监控设备就放在此机房,造成网管失效,监控和告警都无法使用。面对这一桩桩事故,我们能做的难道只是无奈的叹气?这一切仅仅只是巧合?我们都有这样的体会:如果在街上准备拦一辆车去赴一个时间紧迫的约会,你会发现街上所有的出租车不是有客就是根本不搭理你,而当你不需要出租车的时候,却发现有很多空车在你周围游弋,只要你一扬手,车随时就停在你的面前。 如果一个月前在浴室打碎镜子,尽管仔细检查和冲刷,也不敢光着脚走路,等过了一段时间确定没有危险了,不幸的事还是照样发生,你还是被碎玻璃扎了脚。 如果你把一片干面包掉在你的新地毯上,它两面都可能着地。但你把一片一面涂有果酱的面包掉在新地毯上,常常是有果酱的那面朝下。这些都印证着墨菲定律:凡事只要有可能出错,那就一定会出错! “Iftherearetwoormorewaystodosomething,andoneofthosewayscan resultinacatastrophe,thensomeonewilldoit.”
三、墨菲定律对运维工作的启示 对待这样的事件,我们可以有两种截然不同的态度:一种是消极的态度,认为既然差错是不可避免的,事故迟早会发生,那么结果就是大家等着不幸的到来,难有作为;另一种是积极的态度,认为差错虽不可避免,事故迟早要发生的,那么我们就不能有丝毫放松的思想,要时刻提高警觉,防止事故发生,保证安全。 正确的态度,当然是积极的:我们制定了各种流程规范,希望能通过标准流程化的操作来消除意外;我们开发了很多的工具平台,希望通过工具和自动化的操作来规避“人容易犯错”这个与生俱来的风险;我们有各种与个人或部门绩效绑定的考核,希望从意识上让大家重视安全运营;我们还颁布了明确的运营奖惩制度,从激励和压力两方面驱动全体员工提升安全运营的自觉性。这些积极的管理方法,是否能得到大家的认同,是否能彻底的开展执行,最终又是否能起到效果呢?这里以流程为例,很粗略的思考如何从流程方面来规避运营事故,提升运营质量。
四、墨菲定律在运维中的应用之道 对于ITIL,很多人并不陌生,甚至是运营岗位同事的必修之课。ITIL 在公司应用最广泛的流程:应急事件管理,变更管理,设备配置管理和问题管理,产品发布管理。例如:产品发布要遵守测试和发布规范,确保软件的质量。运营中如出现突发事故,导致业务中断或受损,则需要通过事件管理的方法论,快速恢复业务,保障用户体验。于此同时,累积的大量事件数据,也是一笔宝贵的资源, 通过分析事件,发现系统和流程的漏洞,帮助完善产品。事实上,大量的事故分析,也证明如果开发在设计程序时,多仔细检验程序逻辑,如果在发布前测试能多进行边界测试,在设计发布方案时,能多考虑到现网的复杂环境和用户压力,选择合适的时间和制定合理的回退方案,很多的事故就不会发生。 对于流程管理,最大的难点莫过于执行。流程本身的合理性和可执行性需要在实践中不断明确,有人抱怨流程冗长、复杂,执行起来麻烦,于是自己偷偷地走捷径。有人觉得流程死板,应该灵活执行,于是一些很自信的同学,认为自己的操作万无一失,根本不需要遵守流程。可我们通过开始的这几起故障来看,都是可以通过流程规范来避免的。例如:拔错光纤的事故中,如果根据规范要求,高风险操作必须由2 名员工在场核对确认后才进行操作,那么我想看错的概率就会减小很多。
五、墨菲定律教给我们做人之道 我们维护的设备日益增多,人手相对显的不足,以后公司可能会把重复性高和技术含量低的工作外包给第三方服务提供商,就有一部分工作不是由我们自己来做,因此对第三方服务人员的管理要做好,这之间的接口和任务下发必须要有明确的流程。向第三方人员下发任务时,如处理服务器故障,若业务人员SLA需求时间紧急,我方人员时间上来不及或风险意识浅薄,就直接打电话向第三方人员下发任务,在这个过程中就有可能出现错误,导致故障发生。比如上面的第一个故障,就是通过电话向第三方下发任务单,发生故障后也无任何书面的凭证来说明下发的内容是正确的,后续向第三方要求承担责任也比较麻烦。所以我们人员要有自我保护的能力,严格按流程执行。 有时即使是我们自己进行操作,也不能完全避免故障的发生。比如某机房网络人员做完变更后,没有按要求对网络状态进行检查,偏偏此机房的监控还没有被纳入,导致故障发现和定位的时间比较长。如果按照变更流程,要求在操作过程中进行检查,发现问题及时解决或回退就可避免。上面第一例故障,如果某公司人员在外包人员操作中能够及时进行网络状态的检查和确认,并且进行远程监控和指导,也能避免故障的发生。 对应高风险的操作,虽然有时只是更换一条光纤或者更简单的任务,看似简单,但一旦弄错,造成的影响就是巨大的。比如服务器的重启,简单的仅仅去按下服务器电源按钮即可,但一旦重启错服务器,就有可能导致大批用户掉线或数据丢失。所以部门需要对高风险的操作进行修订和补充,高风险操作必须有doublecheck、确认机制。操作前后都要有详细规范的checklist 来保证数据的正确性,每做完一步后进行验证,避免人为失误。 上面的故障虽然操作的是未投入运营的光纤,看似不会出现问题,但偏偏出现了第三方人员拔错了光纤。如果在操作前能够按照高风险操作规范,有人员在现场进行指导和监督,就可以避免故障的发生。 一个人难免会犯错误,但我们要最大限度的减少认为失误给运维带来的影响。我们至少应具备以下优秀品质,责任心--一个人不管在工作担负的责任有多大,担负的工作有多少,但不能确少责任心。有了这份责任心,就会认识到自己工作的重要。比如设备管理系统中的数据,似乎错一条数据关系不大,但往往错误的根源就在于这条数据;比如线缆的标签,一个小小的标签也能引发故障。所以我们在高危操作中,根据现有的数据,再用其它方法对现有数据进行验证,确认正确后操作。细心--细节决定成败,这在我们日常的工作中是非常适用的。出的每次人为故障,其实回过头来看,有很多是由粗心造成的。比如标签贴错了设备、修改错了端口的配置、拔错了线缆、重启错设备等。所以责任心+细心,可以避免很多人为的失误。
错误是我们的影子,但错误并不总是坏事,从错误中吸取经验教训,加以规避、从而进行制度流程上的完善,那么错误终究会成为成功的垫脚石。 |