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