提高系統(tǒng)故障排查效率的五法寶
譯文【2013年5月16日 51CTO外電頭條】但凡在IT行業(yè)干過一段時間、哪怕是只工作幾天的朋友,應(yīng)該都會對這樣的狀況有所了解:關(guān)鍵性任務(wù)生產(chǎn)系統(tǒng)突然之間無法正常工作,而我們卻完全不知道這一切發(fā)生的原因,以及如何著手加以修復(fù)。
這些可怕的事情往往猛然出現(xiàn),粗暴地打斷我們的項目會議、應(yīng)用程序展示以及系統(tǒng)升級等安排——這也正是IT部門存在的意義,并不是每個人都有辦法解決突如其來的難題。
對看似無章可循的問題進行故障排查可以說是世界上最緊張且難度、強度最大的工作之一。關(guān)鍵性任務(wù)系統(tǒng)的計劃外停機事件即使在規(guī)模最小的機構(gòu)當中也是一項不容忽視的大事,需要對同事與管理層進行嚴格排查;而隨著企業(yè)規(guī)模的不斷擴張,停機所導(dǎo)致的后果也將越來越嚴重,狀況自然就變得更糟。
這種無形的壓力往往令技術(shù)人員身心俱疲,甚至讓最出色的工程師不堪忍受而犯下愚蠢的低級失誤,這將進一步導(dǎo)致問題復(fù)雜化、最終延長停機時間。
要在重重壓力下保持冷靜絕非易事,即使是無數(shù)次面對困境的老手也很難做到這一點。不過這里我們將與大家分享五條簡單規(guī)則,各位可以嘗試將其添加到自己的緊急故障排查流程當中,借以更快整理決議、查明停機原因,最終避免事情變得更糟。
1、避免二次損害
當某個看似難以捉摸的難題出現(xiàn)時,我們的本能反應(yīng)肯定是快速投身問題分析工作以求速戰(zhàn)速決、盡快讓系統(tǒng)恢復(fù)正常。雖然這樣的方式經(jīng)常能夠解決問題而且起效神速,但同時也很可能把情況推向令人難以置信的惡化深淵。故障排查手段包括重新啟動不穩(wěn)定系統(tǒng)、嘗試自動記錄數(shù)據(jù)庫、文件系統(tǒng)修復(fù)等等,這些方式往往確實能搞定難題并讓系統(tǒng)重回生產(chǎn)軌道,但同時也沒準導(dǎo)致數(shù)據(jù)恢復(fù)努力付之東流,毀掉確定故障根本原因的機會甚至大大延長關(guān)鍵性系統(tǒng)的停機時間。
與本能反應(yīng)不同,我們建議大家首先采取看似最不自然的處理方式:后退一步,考慮我們要怎樣撤銷所有針對系統(tǒng)修復(fù)所做出的操作與努力。要讓自己的修復(fù)工作能被順利撤銷,大家可能需要進行配置備份、保存虛擬機或SAN快照、留存也許會丟失或被覆蓋的日志文件副本、將可能受到影響的數(shù)據(jù)復(fù)制到正常系統(tǒng)當中等。之所以這種方案與我們的直觀感受相悖,是因為面對停機所導(dǎo)致的業(yè)務(wù)癱瘓壓力,似乎沒人愿意把時間浪費在這些好像無關(guān)緊要的事情上--畢竟它們不能對解決難題起到任何直接作用。然而我們之所以要堅持這種處理思路,是因為它實現(xiàn)了兩個非常重要的目標。
第一,如果我們的故障排查工作最終令情況進一步惡化--例如我們決定重啟服務(wù)器但設(shè)備干脆無法運轉(zhuǎn)--良好的撤銷準備工作能幫大家在新系統(tǒng)中保留現(xiàn)有數(shù)據(jù)。
第二,如果大家的緊急處理方案不知何故竟成功解決了難題,上述工作也保留了一切可用于重現(xiàn)故障的數(shù)據(jù),這樣我們就能在閑暇時慢慢研究問題出現(xiàn)的原因。如果說有什么比面對難題時束手無策更糟糕,那一定是解決了難題但卻不知道自己如何或者為什么能取得成功。在這種情況下,我們不僅沒法給焦急等待結(jié)果的同事與企業(yè)領(lǐng)導(dǎo)一個明確的交代,而且也不能保證這類情況不會再次發(fā)生。
2、認真記筆記
大家必須做的第二件事是:詳細記錄自己的觀察結(jié)果以及嘗試過的故障排查操作步驟,如何可以的話最好把時間點也標注在內(nèi)。與第一條規(guī)則類似,記筆記這類建議往往讓人感覺是在浪費本身就極度匱乏的處理時間,但從長遠角度來看,這樣的好習(xí)慣能為我們未來的運維工作節(jié)約大量時間與精力。
首先,記筆記能防止我們一遍遍嘗試已經(jīng)被證明無效的挽救措施,也就是俗稱的“兜圈子”--當面對巨大壓力時,這類情況往往時有發(fā)生。其次,如果大家需要與供應(yīng)商方面接洽,筆記也能幫我們建立一套全面的列表,提醒自己哪些廠商已經(jīng)溝通完成,這樣可以避免在慌亂之中理清情況。第三,如果大家打算查閱錯誤日志,那么可以在筆記中列出自己執(zhí)行修復(fù)操作的時間,并將其與日志中的時間戳相比照。如果不這么做,大家將無法分清日志中哪些條目是系統(tǒng)運行記錄、而哪些是自己曾經(jīng)做過的修復(fù)操作,并因而不得不重復(fù)故障排查流程--這樣無疑會延長問題處理耗時。
3、仔細研究
當被壓力逼到絕望的邊緣時,大家很可能發(fā)現(xiàn)自己開始不顧一切尋找救命稻草--換言之,希望在谷歌上找到答案。而且除非我們碰上了百年一遇的罕見錯誤,否則網(wǎng)上總會有一堆帖子聲稱他們也經(jīng)歷過類似的問題,并且最終得到了順利解決。
需要強調(diào)的是,這時候大家務(wù)必要對此類看似對癥的網(wǎng)上信息進行仔細研究。在很多情況下,我們會發(fā)現(xiàn)雖然故障表現(xiàn)完全相同,但實際情況卻大相徑庭。我曾親眼目睹很多運維人員浪費大量時間來嘗試一種與當前問題毫不相關(guān)的解決方案--事實上只要靜下心來認真閱讀問題描述,大家應(yīng)該能很容易地回避這類費力不討好的低級失誤。
4、積極進行信息分享
如果大家身為問題處理團隊的一員,或者需要面對一大群因工作中斷而憤憤不平的用戶,肯定會發(fā)現(xiàn)溝通在這種情況下?lián)碛袠O其重要的意義。一方面能幫助用戶了解我們正在做什么(當然,前提是確實要做點什么),另一方面則有助于避免團隊成員之間各自為戰(zhàn)所導(dǎo)致的混亂局面。
在大型團隊當中,最理想的開局策略是指派一位溝通伙伴,我們要及時向他匯報自己的工作進展;這位伙伴則負責把得到的消息通知給受影響的用戶群體或其他團隊成員處,幫助大家了解當前的處理進度。
5、做好準備
雖然我們沒辦法為那些無法預(yù)見的難題做什么準備,但仍然可以從現(xiàn)在開始組織一點應(yīng)對步驟,幫助自己在面對可能出現(xiàn)的情況時節(jié)約時間。
舉例來說,如果大家正在進行網(wǎng)絡(luò)問題的故障排查工作,那么把一臺配置了協(xié)議分析工具(例如Wireshark)的筆記本接入核心交換機絕對能幫上大忙。在網(wǎng)絡(luò)問題出現(xiàn)時,我們一般只需要15到20分鐘就能讓這套分析工具投入運作;但如果事前沒有準備,混亂之間我們可能很長時間都搞不定配置工作,并最終導(dǎo)致停機時間大大延長。集中化網(wǎng)絡(luò)監(jiān)控與日志記錄工具也很重要,它們能簡化應(yīng)用程序與網(wǎng)絡(luò)事件之間的關(guān)聯(lián)分析,并快速將看似復(fù)雜的難題定位至核心原因。
總結(jié)陳詞
故障排查是一項壓力極大的工作,進行過程中毫無樂趣可言,但完成之后則能幫助IT團隊積累寶貴的處理經(jīng)驗。相對于那些在房間或數(shù)據(jù)中心內(nèi)進行的安全工作來說,故障排查會帶來極大的恐慌感并引發(fā)腎上腺素飆升。此外,壓力的存在還可能誘發(fā)我們犯下愚蠢的低級失誤--要克服這種白癡般的本能,我們需要克制自己快要爆發(fā)的滿腔怒火、強迫自己以有條不紊的方式逐一開展嘗試。
現(xiàn)在相信大家已經(jīng)了解如何在腎上腺素的作用下繼續(xù)保持冷靜心態(tài),接下來要做的就是將其付諸實踐。
原文鏈接: