天天看點

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

作者:王華鋒(水彧)

雙十一一直是阿裡巴巴集團每年要打的一場大戰役。要打赢這場戰役,技術上,不僅僅是幾個應用、幾個系統的事,也不是多少個開發+多少個測試就能完成的事,而是需要各大系統協同作戰、每個應用各司其職、技術人員通力合作才能取得最終的勝利。

EagleEye作為阿裡集團老牌的鍊路跟蹤系統,其自身業務雖不在交易鍊路上,但卻監控着全集團的鍊路狀态,特别是在中間件的遠端調用上,覆寫了集團絕大部分的場景,在問題排查和定位上發揮着巨大的作用,保障了各個系統的穩定性,為整個技術團隊打赢這場戰役保駕護航。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖1 EagleEye系統整體情況

近兩年集團業務和規模始終保持着高速的增長,縱深上,交易量屢攀新高,雙十一零點的交易峰值也再一次重新整理了曆史;橫向上,集團涉及的行業和領域也不斷的拓展,各行各業在不斷加入阿裡(高德、優酷、友盟及大麥等等),共同前進。

面對資料規模持續增加,如何應對在業務高速發展的背景下系統采集的資料量級的持續增長,如何在越來越大的資料規模面前保障EagleEye自身業務的穩定,成為EagleEye今年雙十一面臨的巨大挑戰。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖2 EagleEye支援的業務情況

全鍊路壓測一直是阿裡巴巴集團保障雙十一的大殺器之一,通過線上上環境全真模拟雙十一當天的流量來檢驗各個應用系統的負載能力。EagleEye在全鍊路壓測中承擔了重要的責任,透傳壓測标記實作流量的區分,壓測資料的收集與展現用以幫助業務方的開發同學發現及定位系統的問題。是以,保障全鍊路壓測也是EagleEye的重要使命之一。

無論是常态、全鍊路壓測或者是雙十一當天,EagleEye面臨的主要問題是如何保障自身系統在海量資料沖擊下的穩定性,以及如何更快的展現各個系統的狀态及更好的幫助開發同學發現及定位問題。今年,EagleEye通過了一系列改造更新提高了系統的穩定性,實作了更好更快的輔助業務方定位及排查問題。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖3 系統架構圖

早期的EagleEye在鍊路跟蹤以及資料統計都是基于明細日志完成,實時采集全量的明細日志并在流計算中做聚合,随着業務量的增長,日志的資料量也在急劇上升,計算量也随之線性增長,資源消耗較高。而且在全鍊路壓測或者大促期間,日志量會有明顯的峰值,極有可能造成計算叢集系統過載或者資料延遲甚至有可能導緻資料的丢失。

為解決這類問題,最初的做法是采樣,通過采樣降低收集的日志量,進而穩定計算叢集的負載及水位,保障EagleEye自身業務的穩定性,盡量減少業務峰值對我們的影響。但是帶來的問題也是顯而易見的,統計資料在計算時需要考慮采樣率估算出真實的資料,在采集資料量較小且采樣率較高的場景下導緻聚合後的資料不準确,無法展現業務真實的狀态,進而也就失去了其價值。

為徹底解決業務峰值對EagleEye計算叢集的沖擊,将部分實時計算邏輯下沉到業務方的機器中,使得業務量和所需采集的日志量解耦,保證計算叢集的穩定性。具體實作是在業務方的機器上先将資料按照指定次元做聚合(一般是以時間次元),計算叢集采集該統計資料後再次聚合,極大的穩定了計算叢集的負載。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖4 計算能力下沉

計算能力下沉,也可以了解成将計算分布式化,消耗了業務方極小的一部分資源,保證了EagleEye叢集的穩定性。而且,叢集的計算量不再随着業務量的增長而增長,隻随應用規模(應用數量、機器數量)和統計次元的增長而增長,不會再出現由于業務量的瞬間峰值導緻計算機群的負載過高的問題,最終使得EagleEye在全鍊路壓測和大促期間都能保持穩定水位,并且産出精準的資料。

EagleEye一直專注于中間件層面的調用,而阿裡巴巴的業務量龐大,系統也比較複雜,是以各部分的功能劃分比較清晰,中間件層面的一些資料比較難與業務資料相關聯,對于鍊路跟蹤、問題定位及針對指定業務場景的容量規劃等都有一些難度。

今年,EagleEye推出場景化鍊路的功能,開放了添加業務場景标的能力,類似于壓測流量打壓測标,對指定的業務打上對應的業務場景标簽,并關聯該标簽下所有的中間件調用(包括服務、緩存、資料庫和消息等),一是可以幫助業務方開發同學更好地區分某個RPC流量中的業務語義,二是可以清晰的梳理出某個業務場景标下對應的RPC流量,對分析一些關鍵名額,如緩存命中率,資料庫RT等有較大的幫助。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖5 流量場景标

基于此資料,也可以更好的複盤全鍊路壓測資料。在壓測之前(也可以在常态下)對關鍵業務打上指定的标簽,壓測後通過各業務場景的流量得出對應的性能基線,更好的定位核心鍊路中的問題及性能拼勁,提高壓測的效率和價值。

EagleEye的鍊路資料對于問題的發現和定位有着至關重要的作用,更加豐富的資料形式和展現對提高發現的效率有明顯的提升。

在整個雙十一備戰過程中,遇到并解決了很多疑難雜症。其中,單機問題占了很大的比例。在分布式系統中,單機問題是比較常見的一類問題, 由于此類問題往往與業務代碼不直接相關,與容器或者機器有一定的關聯性,且出現的機率較小,有一定的随機性,導緻該問題往往比較難排查。實際業務的表現可能是RT的抖動,也可能是小機率的錯誤等等。

EagleEye的調用鍊雖然可以很快定位此類問題,但是調用鍊是站在單次請求的視角上,在定位到某個IP之後很可能還需要再分析更多的資料才能做決策,針對此類的問題,EagleEye提供了錯誤TopN分布以及系統熱點圖等功能,幫助業務方開發同學快速定位問題。針對單機故障,往往對于整體的名額影響不大,通過應用級别的監控資料比較難定位,EagleEye在流計算中統計了應用各個機器的錯誤情況,彙總并排序出Top10的機器,一旦出現單機故障,可以很明顯的定位到具體的IP,并且根據該IP對應的錯誤數量可以很快做出決策,縮短了開發同學排查問題的時間。系統熱點圖在壓測和大促期間對系統健康度的表現非常清晰,一是可以清晰看到是否存在離群點的機器,二是可以驗證流量的去向是否正确。

2017雙11技術揭秘—雙十一海量資料下EagleEye的使命和挑戰

圖6 系統熱點圖

在阿裡巴巴,EagleEye是一款問題排查的利器,一直服務于業務方的同學幫助其快速發現并定位問題,降低故障的持續時間,提升開發及運維效率。其實,EagleEye底層還蘊含着一份海量的資料,在近一年中,我們不斷地利用及挖掘這份資料的意義,希望發揮其更大的價值,同時也希望基于這些資料建立一套生态體系,幫助使用者更好發展業務,期間也孕育出很多有價值的産品,為集團的技術發展打下了基礎。

天秤項目:天秤基于EagleEye的場景資料及其中間件、系統名額等監控資料,結合其他多款監控産品建構一個系統穩定性解決方案,意在解決問題快速發現和精準定位、大促常态化、壓測常态化等問題。

尖兵計劃 – 更輕量化的全鍊路壓測:尖兵計劃基于EagleEye的中間件、系統名額及壓測資料,實作常态化全鍊路壓測和問題發現,是保障雙十一及全鍊路壓測順利的大殺器之一,相比去年八次全鍊路壓測,今年環境加倍複雜,但是隻需要三次全鍊路壓測就完成目标,為集團節省上千個人力,大幅提升傳遞上線品質和大促效率。

精準回歸:依托EagleEye調用鍊采集與計算的能力,實作了測試用例精準推薦的效果,并在部分應用的精準測試中節約了50%~70%的測試時間。精準測試通過EagleEye采集,資料回流的方案的輸出,在大規模應用上(千萬鍊路)做到了測試用例與應用代碼鍊路的準實時生成。

天圖項目:天圖依賴了部分EagleEye的鍊路資料,為使用者提供面向複雜業務鍊路、高度分布式架構下的Application Performance Management (APM)方案,以全面、實時、可視化、智能的方式讓你快速了解應用和業務鍊路的全貌。

今年的雙十一是一次完美的雙十一,可以說是技術團隊的大獲全勝,EagleEye在這次大考中也交出了一份近乎完美的答卷,無論是在全鍊路壓測中還是雙十一當天,系統的穩定性和資料的實時性都達到了預期,為業務方的提供了強有力的支援,提高了問題排查的效率。

但是,未來的路還很長,智能化的發展腳步越來越快,業務方對EagleEye的資料品質的要求也越來越高,今後EagleEye會專注于架構的演進和智能化的推進,進一步提高問題定位的效率,更好的支撐起基于鍊路資料的一片生态。