分布式跟蹤系統的制作方法
【技術領域】
[0001] 本發明涉及分布式跟蹤系統,特別是涉及一種能夠高效地分析系統運行情況的分 布式跟蹤系統。
【背景技術】
[0002] 隨著技術不斷發展,如今互聯網領域大多數后臺服務都已經完成了S0A(面向服 務的體系結構)化,所以對業務的跟蹤可以直接簡化為對服務調用框架的跟蹤,所以越來 越多的跟蹤系統也涌現出來。目前分布式跟蹤系統理論模型基本來源于GOOGLE的Dapper, 它詳細的闡述了如何對請求調用鏈進行跟蹤,Dapper最初是為了追蹤在線服務系統的請求 處理過程。比如在搜索系統中,用戶的一個請求在系統中會經過多個子系統的處理,而且 這些處理是發生在不同機器甚至是不同集群上的,當請求處理發生異常時,需要快速發現 問題,并準確定位到是哪個環節出了問題,這是非常重要的,Dapper就是為了解決這樣的問 題。但是Dapper只是為解決請求調用這一問題提出了理論模型和簡單實現,功能比較單 一,并不能提供全面的解決方案。
[0003] 本發明的分布式跟蹤系統是在Dapper模型的基礎上進行擴展實現,提供了完整 的分布式系統的業務跟蹤的解決方案。更符合現有SOA架構的系統架構需求,可以在不影 響現有系統性能的前提下,收集分析多臺應用服務器的信息,開發人員可以實時監控系統 運行狀態,追蹤業務請求鏈,根據分析結果查找系統的性能瓶頸,優化調整系統配置提前預 防和解決問題,同時本發明的分布式跟蹤系統提供實時預警功能保證在系統出現異常或宕 機的情況下可以及時通知預警,保證系統的穩定性和高可用性。
【發明內容】
[0004] 以往針對SOA這種分布式架構的監控主要依賴于各種日志的分析,如系統應用日 志,jvm日志,操作系統日志等。通過日志解析可以分析出系統的運行情況和執行效率。但 日志分布分散,搜集日志統一分析就成了問題,而且日志的內容也是需要依賴于開發人員 和底層技術代碼的支撐,不能準確定位想要關注分析的內容。通過全量分析日志也不是一 個好的解決方案,分析效率和結果不容樂觀,而且運營成本也是相當高的。
[0005] 目前也有一些監控系統可以監控中間件的運行狀態,實時顯示系統運行狀態,但 關注的目標主要還是性能方面,如cpu、內存、線程、tps和pv等指標,并不能及時反饋整體 系統的運行情況,而且這類系統的功能都比較單一,只能針對某一中間件如數據庫、消息中 間件等。只能橫向分析性能平均值,不能夠縱向分析系統某一流程的執行情況。
[0006] 本發明的目的是解決分布式后臺服務調用鏈的跟蹤、搜集和分析,其中包括:
[0007] 1.調用鏈的跟蹤,通過代碼在中間件埋點來記錄日志,用一個全局的ID將分布式 請求串接起來。
[0008] 2.可變采樣,可參數化配置采樣,使用一個采樣期望率來標識單位時間內采樣的 追蹤,避免全量收集帶來的大數據量壓力,利于從跟蹤數據中準確的分析。
[0009] 3.多種數據采集,同時采集多種數據,包括請求調用鏈、系統狀態參數、異常堆棧 和JVMGClog等。
[0010] 4.日志收集和存儲,通過異步線程將緩存到內存隊列的日志發送到消息隊列中, 統一通過storm進行匯總存儲,同時支持實時匯總hbase、mysql和離線匯總hdfs存儲。
[0011] 5.調用鏈分析,支持離線匯總分析和實時的單鏈路分析。
[0012] 6.實時預警,實現指標可配置,根據配置指標和分析結果,對不符合要求的分析結 果進行預警。
[0013] 為實現本發明之目的,采用以下技術方案予以實現:
[0014] -種分布式跟蹤系統,包括日志收集器,消息中間件集群,分布式流計算集群,統 一配置中心,分布式文件系統,數據庫,分布式跟蹤系統服務集群,分布式跟蹤系統web服 務器,分布式文件存儲和數據處理集群,其中:
[0015] 日志收集器,用于讀取應用集群的日志以及實時讀取統一配置中心的配置數據, 并將讀取到的日志寫入日志收集器的緩沖隊列;
[0016] 消息中間件集群,用于從日志收集器實時讀取日志,并將讀取到的日志進行緩沖 存儲;
[0017] 分布式流計算集群,用于讀取消息中間件集群中的日志,根據讀取的統一配置中 心的配置數據實時分析處理讀取的日志,之后將實時處理結果存入數據庫中,并將讀取的 全量日志寫入分布式文件系統進行存儲;
[0018] 分布式文件存儲和數據處理集群,用于對分布式文件系統中存儲的日志進行離線 分布式數據分析,并將分析結果回寫到分布式文件系統;
[0019] 分布式跟蹤系統服務集群,用于讀取分布式文件系統中的離線分析結果,合并分 析數據后將其存入數據庫中;
[0020] 分布式跟蹤web服務器,用于提供查詢服務和對統一配置中心進行維護。
[0021] 所述的分布式跟蹤系統,優選的:
[0022] 日志收集器根據從統一配置中心讀取的配置數據中的日志收集策略讀取所需的 日志。
[0023] 所述的分布式跟蹤系統,優選的:分布式流計算集群,對讀取的日志進行的處理包 括:
[0024] (1)驗證:對日志中不符合規范的數據進行過濾,以達到能夠處理的標準;
[0025] (2)分析:對日志中的調用鏈進行統計,分析調用來源和調用依賴;
[0026] (3)預警:對于日志中的錯誤信息或分析出有問題的調用鏈,結合從統一配置中 心讀取的告警配置信息,進行預警提示;
[0027] (4)存儲:將日志全量存儲到分布式文件系統以及將上述(2)中的分析結果存入 數據庫。
[0028] 所述的分布式跟蹤系統,優選的:
[0029] 分布式跟蹤系統服務集群為分布式跟蹤web服務器提供查詢服務。
[0030] 所述的分布式跟蹤系統,優選的:
[0031] 統一配置中心基于zookeeper實現分布式統一配置服務。
[0032] 一種分布式跟蹤方法,包括以下步驟:
[0033] 日志收集器讀取應用集群的日志以及實時讀取統一配置中心的配置數據,并將讀 取到的日志寫入日志收集器的緩沖隊列;
[0034] 消息中間件集群從日志收集器實時讀取日志,并將讀取到的日志進行緩沖存儲;
[0035] 分布式流計算集群讀取消息中間件集群中的日志,對日志進行實時處理,之后將 實時處理結果存入數據庫中,并將讀取的全量日志寫入分布式文件系統進行存儲;
[0036] 分布式文件存儲和數據處理集群對分布式文件系統中存儲的日志進行離線分布 式數據分析,并將分析結果回寫到分布式文件系統;
[0037] 分布式跟蹤系統服務集群讀取分布式文件系統中的離線分析結果,合并分析數據 后將其存入數據庫中;
[0038] 通過分布式跟蹤web服務器查詢日志分析結果以及對統一配置中心進行維護。
[0039] 所述的分布式跟蹤方法,優選的:
[0040] 日志收集器根據從統一配置中心讀取的配置數據中的日志收集策略讀取所需的 日志。
[0041] 所述的分布式跟蹤方法,優選的:分布式流計算集群對讀取的日志進行的處理包 括:
[0042] (1)驗證:對日志中不符合規范的數據進行過濾,以達到能夠處理的標準;
[0043] (2)分析:對日志中的調用鏈進行統計,分析調用來源和調用依賴;
[0044] (3)預警:對于日志中的錯誤信息或分析出有問題的調用鏈,結合從統一配置中 心讀取的告警配置信息,進行預警提示;
[0045] (4)存儲:將日志全量存儲到分布式文件系統以及將上述(2)中的分析結果存入 數據庫。
[0046] 所述的分布式跟蹤方