search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

滴滴是如何高效處理線上故障的?

作者|郭蕾嘉賓|張雲柳

故障處理是每個系統都要面對的現實問題,但隨著系統越來越複雜,故障的發現、定位、處理難度也將隨之增大。滴滴現在服務近 4 億乘客、1700 多萬司機、覆蓋 400 多個城市,超過 10 個業務線提供服務,業務的高速增長對穩定性工作來說是個極大的挑戰。為了了解滴滴在故障處理以及穩定性建設方面的工作,InfoQ 記者採訪了滴滴資深運維工程師張雲柳。另外,張雲柳也將會在 9 月 10 日舉行的 CNUTCon 全球運維技術大會 上分享相關話題,歡迎關注。

InfoQ:可否整體談一談,為了提高故障處理的效率,滴滴出行重點做了哪幾塊工作?

張雲柳: 穩定性建設是一個很大的話題,涉及到多個部門、各個內部平台之間的協作。這裡我主要從整體的處理流程、故障生命周期的分階段投入分別來說明滴滴如何處理故障,提高處理效率。

在公司層面,滴滴以內部競賽的形式來促進公司整體的穩定性建設工作開展,是公司級的競賽之一。每個季度將會總結穩定性建設最好和最差的服務,並有相應獎懲。穩定性技術競賽在公平公正、數據優先、持續迭代等方面逐步完善的同時,也保障了各個團隊的高度參與,積極投入。

穩定性建設在滴滴不是某個部門的重點工作,而是圍繞著技術競賽,全體團隊都深度參與的事情。也正是得益於競賽機制的良性循環,故障發生后,各個可能涉及到的團隊都會同時高優跟進,使得故障處理效率得以大幅提高。

從技術思路出發,我們把故障處理分為預防、發現、定位、止損、恢復幾個大的階段。其中發現、定位、止損三個階段是故障現場的重點階段,故障處理的效率提升也主要是在這三個階段。

快速發現除了傳統的系統指標監控外,公司整體以業務不可用時長定義業務狀態,當任一關鍵業務指標下跌一定比例,則認為當前業務不可用。這裡最大的挑戰是準確判斷業務指標下跌,並且準確性難以保證,基於該背景,「核心業務監控」重點在異常檢測上投入,實現智能報警,使得業務不可用能及時、準確的發現。

快速定位方面,我們的目標是定位到可以確定一個止損預案即可。而定位能力可以說是一個無底洞,比如公網問題需要公網監控、內部交換機問題需要內網監控、機器環境問題需要系統級監控等等,只有相應的監控覆蓋之後,才能直觀的定位問題,因此各個團隊都在發力提升監控覆蓋面。但隨著監控越來越多,業務規模越來越大,如何快速從眾多監控、變更中找到故障根因成為當前的一個難點,建設中的「事件監控」應運而生。事件監控的目標是將各維度的監控報警、各系統的變更以事件的形式整合為一個 timeline,從眾多的事件中智能篩選故障根因。

快速止損方面,更重要的是平時對預案的建設,以此提升故障階段的處理效率。在預案建設上,我們主要從時效性、完備性、可執行性三個方面綜合來評估某個系統。時效性是指每個預案都應當有保質期,失效前或架構調整時需 review,根據預案的新鮮程度給予評分;完備性考察各關鍵系統對預案場景的覆蓋率,我們從網路、程序、安全幾個方面綜合梳理了一個比較通用的場景列表以此來規範各個系統需要建設的預案;可執行性指預案不能只呈現在文字上,還需時常通過演練確定能否達到預期目標,根據預案的執行效率和最終效果進行評分。通過上述的評分機制來引導各個關鍵系統完善其預案,提升故障處理效率。

InfoQ:監控系統發現問題時,你們一般的處理流程是怎麼樣的?

張雲柳: 上面提到了「消防群」溝通機制來保證故障有條不紊的處理,但即使如此,由於業務規模及監控專業度的問題,仍然需要 involve 不少的同學一起進行問題排查。為儘可能規避各個人員信息量不對稱的問題,我們維護了一個故障處理最佳實踐,參考下圖:

上圖勾勒了每次業務故障時,我們的處理、排查思路。通過 BI 業務報警發現業務故障,隨即通過「滅火圖」快速圈定影響面。在圈定的影響面,通過各個性化的監控來具體定位原因,確定止損方案。更多關於定位環節的細節以及我們在智能定位上的嘗試,請一定到現場共同探討。

InfoQ:監控是避免故障的前提,可否談談你們監控系統的架構以及技術棧?

張雲柳: 監控建設確實是穩定性建設最基礎的環節,目前公司內部自研的監控平台作為比較通用的基礎監控,提供了採集、數據存儲、繪圖、報警策略等監控功能,伴隨著滴滴的業務發展經歷了幾次迭代,形成了現在以 OpenFalcon 為基礎的監控體系。相對於 OpenFalcon,滴滴的實現有一些自己的改進:根據滴滴用戶習慣實現了一個多級索引結構、報警數據獲取模式調整等。可以說基於 OpenFalcon 進行了深度定製。感興趣的朋友可以看看作者的分享「基於 Falcon 的滴滴內部監控系統」。

基礎監控重點在於基礎技術能力的輸出,由於各個具體業務方向的特殊性,在展示上需要有貼合業務定製的風格。僅僅展示上的差異如果需要建設完整的監控系統那在各個基礎的實現環節還是會有比較大的重複性。因此比較基礎的技術能力、規範還是進行的統一的建設:

收斂數據採集方式

目前監控數據的來源主要有日誌、運行時主動上報以及 DB 數據。對於日誌及 DB 數據採集比較常見,這裡主要介紹下運行時主動上報的採集。日誌和 DB 採集需要運維同學單獨對接具體的業務日誌、DB schema,因此借鑒了開源的 statsd 的解決方案,通過業務代碼埋點將狀態數據上報給監控系統。

數據實時聚合

監控系統採集得來的數據,大多數時候是單個實例的數據。隨著業務監控細化,將數據以 idc、來源渠道等等不同的維度聚合展現變成很基本的需求,為此實時計算能力建設成為監控中比較重要的環節。目前主要的實時計算是有實時計算團隊基於 Spark Streaming, Flink 實現的。

數據存儲能力

監控數據存儲受數據量、數據格式及使用方式影響,使用的基礎組件各有差別。目前主要使用的有 RRDTool、Druid 和 ES。

異常檢測智能化

異常檢測是監控數據體現意義最重要的一環。比較傳統的方式是根據歷史曲線變化人為設定一個上下界進行異常報警,在指標項數量小且業務穩定的情況下,該方式成本小、收效快,是個不錯的選擇。但是對於滴滴來講,業務高速發展帶來的是監控指標類別變化快、量級變化快。因此我們不得不尋求更加智能的手段進行異常檢測,現在主要應用的檢測手段有三次指數平滑、上下界訓練、斜率判定等手段。

報警事件統一收斂,智能過濾

監控覆蓋完善並且異常檢測就位后,也帶來了一些甜蜜的煩惱——報警轟炸。當一次真實的故障發生后,整條鏈路的監控數據都會異常,也因此各個系統都會開始產生報警。目前正在將各個系統產生的事件統一收斂到事件庫,同時開展基於時間、底層報警優先的基礎規則做一些過濾嘗試。

監控基礎能力建設大概從上述幾個方向進行統一能力輸出。在智能化方向上的探索目前主要是異常檢測及智能定位。異常檢測現階段在監控上應用的比較成熟,當前核心業務指標的報警控制完全是基於預測演算法來實現的,誤報漏報都比較符合預期。智能定位方向上現階段剛剛起步,目前正在進行相關的基礎建設,比如事件庫的統一收斂、事件分類、業務拓撲關係等。

InfoQ:從一開始簡單的系統監控到現在獨立的監控系統,聊聊你們就監控這件事的迭代思路?

張雲柳: 監控系統的發展確實經歷了幾次迭代,但不管如何演變,我覺得還是始終遵循著「快准穩全」來迭代的。

  • 從最初使用 Nagios 進行系統監控,到開始自研運維平台及監控系統,主要是貼合業務需求,也建立了滴滴基於 WorldTree 的運維平台體系;

  • 後面 Odin 監控的迭代升級分別從數據準確性、監控系統穩定性兩方面進行了很多細節打磨;

  • 隨著業務的不斷發展,監控數據不斷增漲使得查詢速度開始受到影響,因此新版監控系統又在查詢速度、數據存儲上進行了重大升級;

  • 與此同時,各類業務定製監控需求也開始全面鋪開,使得監控方向日趨完備。

  • 在上述基礎能力不斷迭代的過程中,需要運維、研發同學關注的事件也越來越多,因此整合監控能力,智能定位根因將是接下來監控方面的重要思路。

InfoQ:從以往滴滴出行的運維經歷來看, 故障可以分為哪幾類?

張雲柳: 故障方面,穩定性最大的敵人還是變更操作。目前變更引起的業務故障佔比最多,主要包括手動操作、檢查點不夠完備以及高峰期操作等變更問題導致業務故障。針對這類變更問題,滴滴主要建立明確的規範、同時通過平台的技術保障規範的強制執行。其次是依賴的第三方服務故障導致業務受影響,對於該類問題加強多方聯繫溝通,建立日常協作保障機制,溝通解決方案,落實聯動演練。最後是業務邏輯 bug、內部基礎設施故障、服務隔離不合理等原因造成故障。

InfoQ:在 CNUTCon 全球運維技術大會上,你會重點為參會者分享哪些技術點?

張雲柳: 本次大會重點是給大家分享下滴滴在穩定性建設上的一些實踐,主要是以下幾點:

  • 穩定性技術競賽推進穩定性建設。 因為穩定性建設除基礎的技術能力外,各團隊的有效協作也是非常重要的點。所以首先給大家分享的是整個公司層面的穩定性技術競賽,將會為大家分享滴滴穩定性建設如何做到全員參與?故障現場如何有組織、有紀律地救火。

  • 從技術層面看故障的發現、定位、止損。該話題比較大,有如下幾個細分方向:

  • 從業務角度定義故障,智能診斷業務問題。各個系統級的故障比較常見,子系統故障不代表最終用戶看到的業務是受損的。因此滴滴從用戶的角度出發,定義各個產品線的重點業務指標,並採用預測演算法等手段進行故障的智能發現。

  • 基礎監控能力建設,故障處理最佳流程梳理。監控能力將給大家介紹滴滴現有的整體監控建設情況,並詳細分享上面提到的監控基礎技術數據採集、實時聚合、數據存儲及異常檢測智能化等技術體系的建設以及其中遇到的教通用的數據處理問題。

  • 事件統一收斂,智能定位探索。目前我們對報警類及操作類事件進行統一收斂,形成事件庫。初步以 timeline 的方式展現便於大家發現可能的相關事件。另外在智能定位上基於時間、底層事件優先等規則進行的小規模實踐也逐一分享給大家。

騰訊遊戲容器雲平台的技術演進之路

CNUTCon 全球運維技術大會將於 9 月 10-11 日在上海舉行,大會以「智能時代的新運維」為主題,涵蓋 AIOps、SRE、DevOps、運維監控與安全等專場,邀請了來自 Google、Uber、eBay、BAT 等公司大咖分享他們在最新運維技術實踐過程中遇到的坑與經驗,現場為你解疑答惑,點擊「閱讀原文」了解更多精彩!9 折限時優惠,報名時輸入 CNUTCon666 還可再減 200 哦!



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦