0.學習目标
-
- 能夠知道什麼是Skywalking
- 能夠搭建Skywalking環境
- 能夠使用Skywalking進行rpc調用監控
- 能夠使用Skywalking進行mysql調用監控
- 了解Skywalking插件
- 了解Skywalking agent和Open Tracing原理
1.Skywalking概述
在這一部分我們主要了解以下2個問題:
-
- 什麼是APM系統
- 什麼是Skywalking
1.1 什麼是APM系統
1.1.1 APM系統概述
APM (Application Performance Management) 即應用性能管理系統,是對企業系統即時監控以實作
對應用程式性能管理和故障管理的系統化的解決方案。應用性能管理,主要指對企業的關鍵業務應用進
行監測、優化,提高企業應用的可靠性和品質,保證使用者得到良好的服務,降低IT總擁有成本。
APM系統是可以幫助了解系統行為、用于分析性能問題的工具,以便發生故障的時候,能夠快速定位和
解決問題。
1.1.2 分布式鍊路追蹤
随着分布式系統和微服務架構的出現,一次使用者的請求會經過多個系統,不同服務之間的調用關系十分
複雜,任何一個系統出錯都可能影響整個請求的處理結果。以往的監控系統往往隻能知道單個系統的健
康狀況、一次請求的成功失敗,無法快速定位失敗的根本原因。

除此之外,複雜的分布式系統也面臨這下面這些問題:
性能分析:一個服務依賴很多服務,被依賴的服務也依賴了其他服務。如果某個接口耗時突然變長
了,那未必是直接調用的下遊服務慢了,也可能是下遊的下遊慢了造成的,如何快速定位耗時變長
的根本原因呢?
鍊路梳理:需求疊代很快,系統之間調用關系變化頻繁,靠人工很難梳理清楚系統鍊路拓撲(系統
之間的調用關系)。
為了解決這些問題,Google 推出了一個分布式鍊路跟蹤系統 Dapper ,之後各個網際網路公司都參照
Dapper 的思想推出了自己的分布式鍊路跟蹤系統,而這些系統就是分布式系統下的APM系統。
1.1.3 什麼是OpenTracing
分布式鍊路跟蹤最先由Google在Dapper論文中提出,而OpenTracing通過提供平台無關、廠商無關
的API,使得開發人員能夠友善的添加(或更換)追蹤系統的實作。
下圖是一個分布式調用的例子,用戶端發起請求,請求首先到達負載均衡器,接着經過認證服務,訂單
服務,然後請求資源,最後傳回結果。
雖然這種圖對于看清各元件的組合關系是很有用的,但是存在下面兩個問題:
-
-
它不能很好顯示元件的調用時間,是串行調用還是并行調用,如果展現更複雜的調用關系,會更加
複雜,甚至無法畫出這樣的圖。
- 這種圖也無法顯示調用間的時間間隔以及是否通過定時調用來啟動調用。
一種更有效的展現一個調用過程的圖:
基于OpenTracing我們就可以很輕松的建構出上面這幅圖。
1.1.4 主流的開源APM産品
PinPoint
Pinpoint是由一個南韓團隊實作并開源,針對Java編寫的大規模分布式系統設計,通過JavaAgent的機
制做位元組代碼植入,實作加入traceid和擷取性能資料的目的,對應用代碼零侵入。
官方網站:
SkyWalking
SkyWalking是apache基金會下面的一個開源APM項目,為微服務架構和雲原生架構系統設計。它通過
探針自動收集所需的名額,并進行分布式追蹤。通過這些調用鍊路以及名額,Skywalking APM會感覺
應用間關系和服務間關系,并進行相應的名額統計。Skywalking支援鍊路追蹤和監控應用元件基本涵蓋
主流架構和容器,如國産RPC Dubbo和motan等,國際化的spring boot,spring cloud。
官方網站:
http://skywalking.apache.org/
Zipkin
Zipkin是由Twitter開源,是分布式鍊路調用監控系統,聚合各業務系統調用延遲資料,達到鍊路調用監
控跟蹤。Zipkin基于Google的Dapper論文實作,主要完成資料的收集、存儲、搜尋與界面展示。
官方網站:
https://zipkin.io/
CAT
CAT是由大衆點評開源的項目,基于Java開發的實時應用監控平台,包括實時應用監控,業務監控,可
以提供十幾張報表展示。
官方網站: