Skywalking概述


1.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和獲取性能數據的目的,對應用代碼零侵入。
官方網站:
https://github.com/naver/pinpoint

SkyWalking
SkyWalkingapache基金會下面的一個開源APM項目,為微服務架構和雲原生架構系統設計。它通過
探針自動收集所需的指標,並進行分布式追蹤。通過這些調用鏈路以及指標,Skywalking APM會感知
應用間關系和服務間關系,並進行相應的指標統計。Skywalking支持鏈路追蹤和監控應用組件基本涵蓋
主流框架和容器,如國產RPC Dubbomotan等,國際化的spring bootspring cloud
官方網站:
http://skywalking.apache.org/

Zipkin
Zipkin是由Twitter開源,是分布式鏈路調用監控系統,聚合各業務系統調用延遲數據,達到鏈路調用監
控跟蹤。Zipkin基於GoogleDapper論文實現,主要完成數據的收集、存儲、搜索與界面展示。
官方網站:
https://zipkin.io/

CAT
CAT是由大眾點評開源的項目,基於Java開發的實時應用監控平台,包括實時應用監控,業務監控,可
以提供十幾張報表展示。
官方網站:
https://github.com/dianping/cat

1.2 什么是Skywalking
1.2.1 Skywalking概述
根據官方的解釋,Skywalking是一個可觀測性分析平台(Observability Analysis Platform簡稱OAP
和應用性能管理系統(Application Performance Management簡稱APM)。
提供分布式鏈路追蹤、服務網格(Service Mesh)遙測分析、度量(Metric)聚合和可視化一體化解決方案。
下面是Skywalking的幾大特點:

  1. 多語言自動探針,Java,.NET Core和Node.JS。
  2. 多種監控手段,語言探針和service mesh。
  3. 輕量高效。不需要額外搭建大數據平台。
  4. 模塊化架構。UI、存儲、集群管理多種機制可選。
  5. 支持告警。
  6. 優秀的可視化效果。

Skywalking整體架構如下:

 

Skywalking提供TracingMetrics數據的獲取和聚合。
Metric的特點是,它是可累加的:他們具有原子性,每個都是一個邏輯計量單元,或者一個時間
段內的柱狀圖。 例如:隊列的當前深度可以被定義為一個計量單元,在寫入或讀取時被更新統
計; 輸入HTTP請求的數量可以被定義為一個計數器,用於簡單累加; 請求的執行時間可以被定
義為一個柱狀圖,在指定時間片上更新和統計匯總。
Tracing的最大特點就是,它在單次請求的范圍內,處理信息。 任何的數據、元數據信息都被綁定
到系統中的單個事務上。 例如:一次調用遠程服務的RPC執行過程;一次實際的SQL查詢語句;
一次HTTP請求的業務性ID
總結,Metric主要用來進行數據的統計,比如HTTP請求數的計算。Tracing主要包含了某一次請
求的鏈路數據。
詳細的內容可以查看Skywalking開發者吳晟翻譯的文章,Metrics, tracing logging 的關系 :
http://blog.oneapm.com/apm-tech/811.html
整體架構包含如下三個組成部分:
1. 探針(agent)負責進行數據的收集,包含了TracingMetrics的數據,agent會被安裝到服務所在的服務器上,以方便數據的獲取。
2. 可觀測性分析平台OAP(Observability Analysis Platform),接收探針發送的數據,並在內存中使
用分析引擎(Analysis Core)進行數據的整合運算,然后將數據存儲到對應的存儲介質上,比如
ElasticsearchMySQL數據庫、H2數據庫等。同時OAP還使用查詢引擎(Query Core)提供HTTP查詢接口。
3. Skywalking提供單獨的UI進行數據的查看,此時UI會調用OAP提供的接口,獲取對應的數據然后進行展示。

1.2.2 Skywalking優勢
Skywalking相比較其他的分布式鏈路監控工具,具有以下特點:
社區相當活躍。Skywalking已經進入apache孵化,目前的start數已經超過11K,最新版本6.5.0
經發布。開發者是國人,可以直接和項目發起人交流進行問題的解決。
Skywalking支持Java.NET CoreNode.JS語言。相對於其他平台:比如Pinpoint支持Java
PHP,具有較大的優勢。
探針無傾入性。對比CAT具有傾入性的探針,優勢較大。不修改原有項目一行代碼就可以進行集成。

探針性能優秀。有網友對PinpointSkywalking進行過測試,由於Pinpoint收集的數據過多,所以
對性能損耗較大,而Skywalking探針性能十分出色。
支持組件較多。特別是對Rpc框架的支持,這是其他框架所不具備的。SkywalkingDubbo
gRpc等有原生的支持,甚至連小眾的motansofarpc都支持。

1.2.3 Skywalking主要概念介紹
使用如下案例來進行Skywalking主要概念的介紹,Skywalking主要概念包含:
服務(Service) 端點(Endpoint) 實例(Instance) 

上圖中,我們編寫了用戶服務,這是一個web項目,在生產中部署了兩個節點:192.168.1.100和192.168.1.101
用戶服務就是Skywalking的服務(Service),用戶服務其實就是一個獨立的應用(Application),在6.0之后的Skywalking將應用更名為服務(Service)
用戶服務對外提供的HTTP接口/usr/queryAll就是一個端點,端點就是對外提供的接口。
192.168.1.100192.168.1.101這兩個相同服務部署的節點就是實例,實例指同一服務可以部署多個。

1.3 環境搭建
接下來我們在虛擬機CentOS中搭建Skywalking的可觀測性分析平台OAP環境。Skywalking默認使用H2
內存中進行數據的存儲,我們可以替換存儲源為ElasticSearch保證其查詢的高效及可用性。
具體的安裝步驟可以在Skywalking的官方github上找到:
https://github.com/apache/skywalking/blob/master/docs/en/setup/README.md
注意點:要有jdk環境,由於默認h2內存數據庫,會出現丟失的情況,就改成es

安裝Skywalking,分為兩個步驟:

安裝Backend后端服務
   2.安裝UI
首先切回到root用戶,切換到目錄下,解壓Skywalking壓縮包。

#切換到root用戶 su root #切換到skywalking目錄 cd /usr/local/skywalking #解壓壓縮包 tar -zxvf apache-skywalking-apm-6.4.0.tar.gz

修改Skywalking存儲的數據源配置:

 默認使用了localhost下的ES,所以我們可以不做任何處理,直接進行使用。啟動OAP程序:

[root@iZbp143t3oxhfc3ar7jey0Z bin]# sh oapService.sh SkyWalking OAP started successfully!

目前的默認配置不用修改就可以使用,啟動UI程序:

/bin/webappService.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM