摘要: EagleEye作為阿裡集團老牌的鏈路跟蹤系統,其自身業務雖不在交易鏈路上,但卻監控著全集團的鏈路狀態,特別是在中間件的遠程調用上,覆蓋了集團絕大部分的場景,在問題排查和定位上發揮著巨大的作用,保障了各個系統的穩定性,為整個技術團隊打贏這場戰役保駕護航。 背景 雙十一一直是阿裡巴巴集團每年要 ...
摘要: EagleEye作為阿裡集團老牌的鏈路跟蹤系統,其自身業務雖不在交易鏈路上,但卻監控著全集團的鏈路狀態,特別是在中間件的遠程調用上,覆蓋了集團絕大部分的場景,在問題排查和定位上發揮著巨大的作用,保障了各個系統的穩定性,為整個技術團隊打贏這場戰役保駕護航。
背景
雙十一一直是阿裡巴巴集團每年要打的一場大戰役。要打贏這場戰役,技術上,不僅僅是幾個應用、幾個系統的事,也不是多少個開發+多少個測試就能完成的事,而是需要各大系統協同作戰、每個應用各司其職、技術人員通力合作才能取得最終的勝利。
EagleEye作為阿裡集團老牌的鏈路跟蹤系統,其自身業務雖不在交易鏈路上,但卻監控著全集團的鏈路狀態,特別是在中間件的遠程調用上,覆蓋了集團絕大部分的場景,在問題排查和定位上發揮著巨大的作用,保障了各個系統的穩定性,為整個技術團隊打贏這場戰役保駕護航。
圖1 EagleEye系統整體情況
近兩年集團業務和規模始終保持著高速的增長,縱深上,交易量屢攀新高,雙十一零點的交易峰值也再一次刷新了歷史;橫向上,集團涉及的行業和領域也不斷的拓展,各行各業在不斷加入阿裡(高德、優酷、友盟及大麥等等),共同前進。
面對數據規模持續增加,如何應對在業務高速發展的背景下系統採集的數據量級的持續增長,如何在越來越大的數據規模面前保障EagleEye自身業務的穩定,成為EagleEye今年雙十一面臨的巨大挑戰。
圖2 EagleEye支持的業務情況
全鏈路壓測一直是阿裡巴巴集團保障雙十一的大殺器之一,通過線上上環境全真模擬雙十一當天的流量來檢驗各個應用系統的負載能力。EagleEye在全鏈路壓測中承擔了重要的責任,透傳壓測標記實現流量的區分,壓測數據的收集與展現用以幫助業務方的開發同學發現及定位系統的問題。所以,保障全鏈路壓測也是EagleEye的重要使命之一。
今年的EagleEye
無論是常態、全鏈路壓測或者是雙十一當天,EagleEye面臨的主要問題是如何保障自身系統在海量數據衝擊下的穩定性,以及如何更快的展現各個系統的狀態及更好的幫助開發同學發現及定位問題。今年,EagleEye通過了一系列改造升級提高了系統的穩定性,實現了更好更快的輔助業務方定位及排查問題。
圖3 系統架構圖
計算能力下沉
早期的EagleEye在鏈路跟蹤以及數據統計都是基於明細日誌完成,實時採集全量的明細日誌併在流計算中做聚合,隨著業務量的增長,日誌的數據量也在急劇上升,計算量也隨之線性增長,資源消耗較高。而且在全鏈路壓測或者大促期間,日誌量會有明顯的峰值,極有可能造成計算集群系統過載或者數據延遲甚至有可能導致數據的丟失。
為解決這類問題,最初的做法是採樣,通過採樣降低收集的日誌量,從而穩定計算集群的負載及水位,保障EagleEye自身業務的穩定性,儘量減少業務峰值對我們的影響。但是帶來的問題也是顯而易見的,統計數據在計算時需要考慮採樣率估算出真實的數據,在採集數據量較小且採樣率較高的場景下導致聚合後的數據不准確,無法展現業務真實的狀態,從而也就失去了其價值。
為徹底解決業務峰值對EagleEye計算集群的衝擊,將部分實時計算邏輯下沉到業務方的機器中,使得業務量和所需採集的日誌量解耦,保證計算集群的穩定性。具體實現是在業務方的機器上先將數據按照指定維度做聚合(一般是以時間維度),計算集群採集該統計數據後再次聚合,極大的穩定了計算集群的負載。
圖4 計算能力下沉
計算能力下沉,也可以理解成將計算分散式化,消耗了業務方極小的一部分資源,保證了EagleEye集群的穩定性。而且,集群的計算量不再隨著業務量的增長而增長,只隨應用規模(應用數量、機器數量)和統計維度的增長而增長,不會再出現由於業務量的瞬間峰值導致電腦群的負載過高的問題,最終使得EagleEye在全鏈路壓測和大促期間都能保持穩定水位,並且產出精準的數據。
場景化鏈路
EagleEye一直專註於中間件層面的調用,而阿裡巴巴的業務量龐大,系統也比較複雜,所以各部分的功能劃分比較清晰,中間件層面的一些數據比較難與業務數據相關聯,對於鏈路跟蹤、問題定位及針對指定業務場景的容量規劃等都有一些難度。
今年,EagleEye推出場景化鏈路的功能,開放了添加業務場景標的能力,類似於壓測流量打壓測標,對指定的業務打上對應的業務場景標簽,並關聯該標簽下所有的中間件調用(包括服務、緩存、資料庫和消息等),一是可以幫助業務方開發同學更好地區分某個RPC流量中的業務語義,二是可以清晰的梳理出某個業務場景標下對應的RPC流量,對分析一些關鍵指標,如緩存命中率,資料庫RT等有較大的幫助。
圖5 流量場景標
基於此數據,也可以更好的復盤全鏈路壓測數據。在壓測之前(也可以在常態下)對關鍵業務打上指定的標簽,壓測後通過各業務場景的流量得出對應的性能基線,更好的定位核心鏈路中的問題及性能拼勁,提高壓測的效率和價值。
精細化監控
EagleEye的鏈路數據對於問題的發現和定位有著至關重要的作用,更加豐富的數據形式和展現對提高發現的效率有明顯的提升。
在整個雙十一備戰過程中,遇到並解決了很多疑難雜症。其中,單機問題占了很大的比例。在分散式系統中,單機問題是比較常見的一類問題, 由於此類問題往往與業務代碼不直接相關,與容器或者機器有一定的關聯性,且出現的概率較小,有一定的隨機性,導致該問題往往比較難排查。實際業務的表現可能是RT的抖動,也可能是小概率的錯誤等等。
EagleEye的調用鏈雖然可以很快定位此類問題,但是調用鏈是站在單次請求的視角上,在定位到某個IP之後很可能還需要再分析更多的數據才能做決策,針對此類的問題,EagleEye提供了錯誤TopN分佈以及系統熱點圖等功能,幫助業務方開發同學快速定位問題。針對單機故障,往往對於整體的指標影響不大,通過應用級別的監控數據比較難定位,EagleEye在流計算中統計了應用各個機器的錯誤情況,彙總併排序出Top10的機器,一旦出現單機故障,可以很明顯的定位到具體的IP,並且根據該IP對應的錯誤數量可以很快做出決策,縮短了開發同學排查問題的時間。系統熱點圖在壓測和大促期間對系統健康度的表現非常清晰,一是可以清晰看到是否存在離群點的機器,二是可以驗證流量的去向是否正確。
圖6 系統熱點圖
更豐富的生態
在阿裡巴巴,EagleEye是一款問題排查的利器,一直服務於業務方的同學幫助其快速發現並定位問題,降低故障的持續時間,提升開發及運維效率。其實,EagleEye底層還蘊含著一份海量的數據,在近一年中,我們不斷地利用及挖掘這份數據的意義,希望發揮其更大的價值,同時也希望基於這些數據建立一套生態體系,幫助用戶更好發展業務,期間也孕育出很多有價值的產品,為集團的技術發展打下了基礎。
天秤項目:天秤基於EagleEye的場景數據及其中間件、系統指標等監控數據,結合其他多款監控產品構建一個系統穩定性解決方案,意在解決問題快速發現和精准定位、大促常態化、壓測常態化等問題。
尖兵計劃 – 更輕量化的全鏈路壓測:尖兵計劃基於EagleEye的中間件、系統指標及壓測數據,實現常態化全鏈路壓測和問題發現,是保障雙十一及全鏈路壓測順利的大殺器之一,相比去年八次全鏈路壓測,今年環境加倍複雜,但是只需要三次全鏈路壓測就完成目標,為集團節省上千個人力,大幅提升交付上線質量和大促效率。
精準回歸:依托EagleEye調用鏈採集與計算的能力,實現了測試用例精準推薦的效果,併在部分應用的精準測試中節約了50%~70%的測試時間。精準測試通過EagleEye採集,數據迴流的方案的輸出,在大規模應用上(千萬鏈路)做到了測試用例與應用代碼鏈路的準實時生成。
天圖項目:天圖依賴了部分EagleEye的鏈路數據,為用戶提供面向複雜業務鏈路、高度分散式架構下的Application Performance Management (APM)方案,以全面、實時、可視化、智能的方式讓你快速瞭解應用和業務鏈路的全貌。
結語
今年的雙十一是一次完美的雙十一,可以說是技術團隊的大獲全勝,EagleEye在這次大考中也交出了一份近乎完美的答卷,無論是在全鏈路壓測中還是雙十一當天,系統的穩定性和數據的實時性都達到了預期,為業務方的提供了強有力的支持,提高了問題排查的效率。
但是,未來的路還很長,智能化的發展腳步越來越快,業務方對EagleEye的數據質量的要求也越來越高,今後EagleEye會專註於架構的演進和智能化的推進,進一步提高問題定位的效率,更好的支撐起基於鏈路數據的一片生態。