基于SpringCloudAlibaba+Skywalking的全鏈路監(jiān)控設(shè)計(jì)方案
胡弦,視頻號(hào)2023年度優(yōu)秀創(chuàng)作者,互聯(lián)網(wǎng)大廠P8技術(shù)專家,Spring Cloud Alibaba微服務(wù)架構(gòu)實(shí)戰(zhàn)派(上下冊(cè))和RocketMQ消息中間件實(shí)戰(zhàn)派(上下冊(cè))的作者,資深架構(gòu)師,技術(shù)負(fù)責(zé)人,極客時(shí)間訓(xùn)練營(yíng)講師,四維口袋KVP最具價(jià)值技術(shù)專家,技術(shù)領(lǐng)域?qū)<覉F(tuán)成員,2021電子工業(yè)出版社年度優(yōu)秀作者,獲得2023電子工業(yè)出版技術(shù)成長(zhǎng)領(lǐng)路人稱號(hào),榮獲2024年電子工業(yè)出版社博文視點(diǎn)20周年榮譽(yù)專家稱號(hào)。
基于SpringCloudAlibaba和SkyWalking的全鏈路監(jiān)控設(shè)計(jì)可以從以下幾個(gè)方面進(jìn)行。
1.概要設(shè)計(jì)
1.1 整體架構(gòu)設(shè)計(jì)
(1)微服務(wù)架構(gòu):采用SpringCloudAlibaba作為微服務(wù)框架,該框架提供了豐富的微服務(wù)開發(fā)組件,如配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由等,便于構(gòu)建和管理微服務(wù)應(yīng)用。
(2)全鏈路監(jiān)控:集成SkyWalking作為全鏈路監(jiān)控工具,通過其Agent在各個(gè)服務(wù)實(shí)例中采集Trace、Metrics等數(shù)據(jù),實(shí)現(xiàn)對(duì)整個(gè)微服務(wù)架構(gòu)的性能監(jiān)測(cè)和追蹤。
1.2 監(jiān)控?cái)?shù)據(jù)采集
(1)自動(dòng)探針:SkyWalking的Agent可以自動(dòng)為Java、.NET等多種語言的應(yīng)用添加探針,無需修改應(yīng)用代碼,實(shí)現(xiàn)無侵入式的監(jiān)控?cái)?shù)據(jù)采集。
(2)性能指標(biāo)采集:采集各個(gè)服務(wù)的響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等關(guān)鍵性能指標(biāo),為后續(xù)的性能分析和問題定位提供數(shù)據(jù)支持。
1.3 監(jiān)控?cái)?shù)據(jù)分析與展示
(1)分布式追蹤:利用SkyWalking的分布式追蹤功能,可以清晰地查看請(qǐng)求在微服務(wù)架構(gòu)中的傳播路徑和調(diào)用關(guān)系,幫助開發(fā)人員快速定位性能瓶頸和錯(cuò)誤。
(2)性能指標(biāo)分析:對(duì)采集到的性能指標(biāo)進(jìn)行實(shí)時(shí)分析,通過圖表等方式直觀展示系統(tǒng)的運(yùn)行狀態(tài)和性能趨勢(shì)。
(3)服務(wù)依賴分析:分析各個(gè)服務(wù)之間的依賴關(guān)系,幫助開發(fā)人員了解系統(tǒng)的整體結(jié)構(gòu)和各個(gè)組件之間的交互情況。
1.4 告警與通知
(1)自定義告警規(guī)則:根據(jù)業(yè)務(wù)需求,設(shè)置合適的告警規(guī)則,如響應(yīng)時(shí)間超過閾值、錯(cuò)誤率過高等情況觸發(fā)告警。
(2)告警通知:當(dāng)觸發(fā)告警規(guī)則時(shí),通過郵件、短信等方式及時(shí)通知相關(guān)人員,以便快速響應(yīng)和處理問題。
1.5 數(shù)據(jù)存儲(chǔ)與擴(kuò)展性
(1)數(shù)據(jù)存儲(chǔ):SkyWalking支持多種數(shù)據(jù)存儲(chǔ)方式,如MySQL、Elasticsearch等,可以根據(jù)實(shí)際需求選擇合適的數(shù)據(jù)存儲(chǔ)方案。
(2)擴(kuò)展性:隨著業(yè)務(wù)的發(fā)展,可以方便地?cái)U(kuò)展監(jiān)控范圍和增加監(jiān)控指標(biāo),以滿足不斷變化的監(jiān)控需求。
綜上所述,基于SpringCloudAlibaba和SkyWalking的全鏈路監(jiān)控設(shè)計(jì)可以實(shí)現(xiàn)微服務(wù)架構(gòu)下的全面監(jiān)控和性能分析,幫助開發(fā)人員和運(yùn)維團(tuán)隊(duì)更好地管理和維護(hù)復(fù)雜的分布式應(yīng)用。
2.詳細(xì)設(shè)計(jì)
2.1 SkyWalking如何從SpringCloudAlibaba應(yīng)用服務(wù)中采集監(jiān)控指標(biāo)?
SkyWalking從SpringCloudAlibaba應(yīng)用服務(wù)中采集監(jiān)控指標(biāo)主要通過以下步驟實(shí)現(xiàn)。
2.1.1 Agent部署與配置
(1)首先,需要在目標(biāo)應(yīng)用服務(wù)中部署SkyWalking的Agent。這個(gè)Agent會(huì)以字節(jié)碼注入的方式,將監(jiān)控代碼直接注入到目標(biāo)應(yīng)用的代碼中,從而實(shí)現(xiàn)對(duì)程序運(yùn)行情況的監(jiān)控和統(tǒng)計(jì)。
(2)配置Agent以連接到SkyWalking的后端服務(wù)器,確保數(shù)據(jù)的正確傳輸。
2.1.2 數(shù)據(jù)采集
(1)SkyWalking的Agent負(fù)責(zé)采集服務(wù)實(shí)例的Trace、Metrics等監(jiān)控?cái)?shù)據(jù)。這些數(shù)據(jù)包括服務(wù)調(diào)用的鏈路信息、響應(yīng)時(shí)間、錯(cuò)誤率等關(guān)鍵性能指標(biāo)。
(2)Agent通過字節(jié)碼技術(shù)監(jiān)控應(yīng)用的執(zhí)行情況,例如Java文件運(yùn)行后,會(huì)有一個(gè)截?cái)嗥餍薷淖止?jié)碼,對(duì)應(yīng)用進(jìn)行監(jiān)控。
2.1.3 數(shù)據(jù)傳輸與存儲(chǔ)
(1)采集到的數(shù)據(jù)會(huì)通過gRPC方式上報(bào)給SkyWalking的后端服務(wù)器。后端服務(wù)器包括OAP(Observability Analysis Platform)和Storage兩部分。
(2)OAP負(fù)責(zé)接收Agent發(fā)送的Tracing和Metric的數(shù)據(jù)信息,然后進(jìn)行流式分析,將分析得到的結(jié)果寫入持久化存儲(chǔ)。Storage則負(fù)責(zé)數(shù)據(jù)的存儲(chǔ),支持多種存儲(chǔ)類型,如MySQL、Elasticsearch等。
2.1.4 數(shù)據(jù)分析與可視化
(1)SkyWalking的Web UI負(fù)責(zé)提供web控制臺(tái),用戶可以通過該控制臺(tái)查看鏈路信息、各種性能指標(biāo)以及性能圖表等。
(2)通過分析這些數(shù)據(jù),開發(fā)人員可以快速定位性能瓶頸和問題所在。
總的來說,SkyWalking通過其Agent從SpringCloudAlibaba應(yīng)用服務(wù)中采集監(jiān)控指標(biāo),并通過后端服務(wù)器進(jìn)行數(shù)據(jù)的傳輸、存儲(chǔ)和分析,最終通過Web UI進(jìn)行數(shù)據(jù)的可視化展示。這種全鏈路監(jiān)控設(shè)計(jì)有助于開發(fā)人員更好地了解和優(yōu)化系統(tǒng)的性能。
2.2 SkyWalking是如何清洗監(jiān)控指標(biāo)的?
SkyWalking清洗監(jiān)控指標(biāo)的過程主要涉及數(shù)據(jù)保留策略和定時(shí)清除過期數(shù)據(jù)兩個(gè)方面。以下是清晰的分點(diǎn)表示和歸納。
2.2.1 數(shù)據(jù)保留策略
(1)SkyWalking提供了數(shù)據(jù)清理機(jī)制,通過配置文件application.yml
中的相關(guān)設(shè)置,可以定義監(jiān)控?cái)?shù)據(jù)的保留時(shí)間。
(2)在配置文件中,可以設(shè)置不同類型數(shù)據(jù)的TTL(Time To Live),例如recordDataTTL
、minuteMetricsDataTTL
、hourMetricsDataTTL
、dayMetricsDataTTL
和monthMetricsDataTTL
等,它們分別代表記錄數(shù)據(jù)、分鐘度量數(shù)據(jù)、小時(shí)度量數(shù)據(jù)、天度量數(shù)據(jù)和月度量數(shù)據(jù)的存活時(shí)間。
(3)當(dāng)數(shù)據(jù)超過設(shè)定的TTL后,SkyWalking系統(tǒng)會(huì)自動(dòng)清理這些數(shù)據(jù),以確保數(shù)據(jù)庫的高效運(yùn)行和監(jiān)控?cái)?shù)據(jù)的實(shí)時(shí)性。
2.2.2 定時(shí)清除過期數(shù)據(jù)
(1)除了依賴自動(dòng)TTL清理機(jī)制外,SkyWalking還可以通過腳本或定時(shí)任務(wù)來定期清除過期的監(jiān)控?cái)?shù)據(jù)。
(2)例如,可以編寫一個(gè)清除腳本,連接到SkyWalking使用的存儲(chǔ)后端(如Elasticsearch),然后按照日期或其他條件刪除舊的數(shù)據(jù)索引。
(3)定時(shí)執(zhí)行這個(gè)清除腳本可以確保過期的監(jiān)控?cái)?shù)據(jù)被及時(shí)清除,從而釋放存儲(chǔ)空間并提高查詢效率。
2.2.3 SkyWalking是如何處理從微服務(wù)中收集過來的監(jiān)控?cái)?shù)據(jù)的?
SkyWalking處理從微服務(wù)中收集過來的監(jiān)控?cái)?shù)據(jù)主要經(jīng)過以下幾個(gè)步驟。
1.數(shù)據(jù)采集
SkyWalking的探針(Agent)與微服務(wù)應(yīng)用集成,無侵入式地收集運(yùn)行時(shí)的各種數(shù)據(jù),包括請(qǐng)求響應(yīng)時(shí)間、調(diào)用鏈路、系統(tǒng)資源使用情況等。
2.數(shù)據(jù)傳輸
收集到的數(shù)據(jù)通過HTTP或gRPC等方式發(fā)送到SkyWalking的數(shù)據(jù)收集器(Backend),即SkyWalking的OAP(Observability Analysis Platform)服務(wù)器。
3.數(shù)據(jù)清洗與整合
(1)OAP服務(wù)器接收到數(shù)據(jù)后,會(huì)進(jìn)行數(shù)據(jù)清洗,去除重復(fù)或無效的信息,確保數(shù)據(jù)的準(zhǔn)確性和有效性。
(2)清洗后的數(shù)據(jù)會(huì)被進(jìn)一步整合,包括將分散的調(diào)用鏈路信息組合成完整的調(diào)用鏈,以及將各個(gè)服務(wù)的性能指標(biāo)進(jìn)行匯總。
4.數(shù)據(jù)存儲(chǔ)
處理后的數(shù)據(jù)被存儲(chǔ)在SkyWalking的數(shù)據(jù)存儲(chǔ)組件中,如Elasticsearch、MySQL等,以供后續(xù)分析和查詢使用。
5.數(shù)據(jù)分析和可視化
(1)SkyWalking提供了Web UI用于數(shù)據(jù)的可視化展示,用戶可以通過圖形化界面查看和監(jiān)控應(yīng)用程序的性能數(shù)據(jù)。
(2)此外,SkyWalking還支持與其他應(yīng)用程序性能監(jiān)控工具集成,如Grafana,以提供更強(qiáng)大的數(shù)據(jù)分析和可視化能力。
6.告警與通知
(1)SkyWalking可以設(shè)置自定義告警規(guī)則,當(dāng)監(jiān)控?cái)?shù)據(jù)觸發(fā)這些規(guī)則時(shí)(如響應(yīng)時(shí)間超過設(shè)定閾值),系統(tǒng)會(huì)發(fā)送告警通知。
(2)告警通知可以通過郵件、短信等方式及時(shí)發(fā)送給相關(guān)人員,以便快速響應(yīng)和處理潛在的性能問題。
在整個(gè)處理過程中,SkyWalking確保了數(shù)據(jù)的完整性、準(zhǔn)確性和實(shí)時(shí)性,為開發(fā)人員和運(yùn)維人員提供了全面的微服務(wù)性能監(jiān)控和追蹤解決方案。
2.2.4 SkyWalking是如何存儲(chǔ)從微服務(wù)中收集過來的監(jiān)控?cái)?shù)據(jù)的?
SkyWalking存儲(chǔ)從微服務(wù)中收集過來的監(jiān)控?cái)?shù)據(jù)的過程可以歸納為以下幾個(gè)步驟。
(1)數(shù)據(jù)收集:SkyWalking通過其agent來收集微服務(wù)中的監(jiān)控?cái)?shù)據(jù)。這些數(shù)據(jù)包括指標(biāo)數(shù)據(jù)(如請(qǐng)求數(shù)量、錯(cuò)誤數(shù)量、響應(yīng)時(shí)間等)和跟蹤數(shù)據(jù)(用于追蹤系統(tǒng)中的請(qǐng)求和調(diào)用鏈路)。
(2)數(shù)據(jù)傳輸:收集到的數(shù)據(jù)會(huì)被發(fā)送到SkyWalking的后端服務(wù),即Observability Analysis Platform(OAP)。OAP負(fù)責(zé)接收探針發(fā)送的數(shù)據(jù)。
(3)數(shù)據(jù)處理:OAP在內(nèi)存中使用分析引擎對(duì)數(shù)據(jù)進(jìn)行整合運(yùn)算。這個(gè)分析引擎支持?jǐn)?shù)據(jù)聚合、數(shù)據(jù)分析,并能驅(qū)動(dòng)數(shù)據(jù)流從探針到用戶界面的流程。此外,它還可以分析SkyWalking原生鏈路跟蹤和性能指標(biāo),以及第三方來源的數(shù)據(jù)。
(4)數(shù)據(jù)存儲(chǔ):處理后的數(shù)據(jù)會(huì)被存儲(chǔ)到對(duì)應(yīng)的存儲(chǔ)介質(zhì)上。SkyWalking通過開放的插件化的接口存放數(shù)據(jù),目前支持的存儲(chǔ)器有Elasticsearch、MySQL、ShardingSphere、TiDB、H2等。由于監(jiān)控采集的數(shù)據(jù)量較大,并存在很多的數(shù)據(jù)檢索需求,因此推薦將數(shù)據(jù)存儲(chǔ)到Elasticsearch中。
(5)數(shù)據(jù)展示:用戶界面(UI)負(fù)責(zé)提供控制臺(tái),用于查看鏈路、服務(wù)指標(biāo)等。UI是一個(gè)基于接口高度定制化的Web系統(tǒng),用戶可以可視化查看和管理SkyWalking數(shù)據(jù)。
到此這篇關(guān)于基于SpringCloudAlibaba+Skywalking的全鏈路監(jiān)控設(shè)計(jì)的文章就介紹到這了,更多相關(guān)SpringCloudAlibaba Skywalking全鏈路監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Idea Project文件目錄不見了,只剩External Libraries和imi文件的解決
這篇文章主要介紹了Idea Project文件目錄不見了,只剩External Libraries和imi文件的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Spring MVC結(jié)合Spring Data JPA實(shí)現(xiàn)按條件查詢和分頁
這篇文章主要為大家詳細(xì)介紹了Spring MVC結(jié)合Spring Data JPA實(shí)現(xiàn)按條件查詢,以及分頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Java8如何利用Lambda快速生成map、多層嵌套map
這篇文章主要介紹了Java8如何利用Lambda快速生成map、多層嵌套map問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09基于SpringBoot實(shí)現(xiàn)大文件分塊上傳功能
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)大文件分塊上傳功能,實(shí)現(xiàn)原理其實(shí)很簡(jiǎn)單,核心就是客戶端把大文件按照一定規(guī)則進(jìn)行拆分,比如20MB為一個(gè)小塊,分解成一個(gè)一個(gè)的文件塊,然后把這些文件塊單獨(dú)上傳到服務(wù)端,需要的朋友可以參考下2024-09-09Java使用反射和動(dòng)態(tài)代理實(shí)現(xiàn)一個(gè)View注解綁定庫
這篇文章主要介紹了Java使用反射和動(dòng)態(tài)代理實(shí)現(xiàn)一個(gè)View注解綁定庫,代碼簡(jiǎn)潔,使用簡(jiǎn)單,擴(kuò)展性強(qiáng),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05