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