2017雙11海量數據下EagleEye的使命和挑戰

来源:https://www.cnblogs.com/feiyudemeng/archive/2017/12/29/8145095.html
-Advertisement-
Play Games

摘要: 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會專註於架構的演進和智能化的推進,進一步提高問題定位的效率,更好的支撐起基於鏈路數據的一片生態。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:什麼是 KVM KVM 是指基於 Linux 內核的虛擬機(Kernel-based Virtual Machine)。 2006 年 10 月,由以色列的 Qumranet 組織開發的一種新的“虛擬機”實現方案。 2007 年 2 月發佈的 Linux 2.6.20 內核第一次包含了 KVM  ...
  • 問題: sudo apt-get install vim E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administratio ...
  • 前幾天由於工作上的事耽誤了幾天,特來追加更新 第1章 ansible軟體概念說明 python語言是運維人員必會的語言,而ansible是一個基於Python開發的自動化運維工具 (saltstack)。其功能實現基於SSH遠程連接服務;ansible可以實現批量系統配置、批量軟體部署、批量文件拷貝 ...
  • win10點擊滑鼠右鍵調出菜單時,看不到菜單的文字,只顯示了小圖標這種問題的修複方法。 ...
  • 靜態散列要求桶的數目始終固定,那麼在確定桶數目和選擇散列函數時,如果桶數目過小,隨著數據量增加,性能會降低;如果留一定餘量,又會帶來空間的浪費;或者定期重組散列索引結構,但這是一項開銷大且耗時的工作。為了應對這些問題,為此提出了幾種動態散列(dynamic hashing)技術,可擴展動態散列(ex ...
  • 一.資料庫的基本操作 資料庫的安裝以後更新 在Linux系統下: 1.啟動資料庫服務:sudo service mysql start 2.停止資料庫服務:sudo service mysql stop 3.重啟資料庫服務:sudo service mysql restart 4.進入MySQL數據 ...
  • 操作系統 : CentOS7.3.1611_x64 go語言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 安裝InfluxDB之後,在/usr/bin下會有如下幾個文件: 下麵簡單介紹下各個工具的使用。 influxd使用方法介紹 該可執行文件為InfluxDB伺服器程 ...
  • 一、Inception簡介一款用於MySQL語句的審核的開源工具,不但具備自動化審核功能,同時還具備執行、生成對影響數據的回滾語句功能。 基本架構: 二、Inception安裝 1、軟體下載 下載鏈接:https://github.com/mysql-inception/inception文檔鏈接: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...