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

