公司最近在構建服務化平臺,需要上線APM系統,本篇文章簡單的介紹SkyWalking
APM
APM全稱Application Performance Management應用效能管理,目的是通過各種探針採集資料,收集關鍵指標,同時搭配資料呈現以實現對應用程式效能管理和故障管理的系統化解決方案
Zabbix、Premetheus、open-falcon等監控系統主要關注伺服器硬體指標與系統服務執行狀態等,而APM系統則更重視程式內部執行過程指標和服務之間鏈路呼叫情況的監控,APM更有利於深入程式碼找到請求響應“慢”的根本問題,與Zabbix之類的監控是互補關係
目前市面上開源的APM系統主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是參考Google的Dapper實現的
CAT: 是由國內美團點評開源的,基於Java語言開發,目前提供Java、C/C++、Node.js、Python、Go等語言的客戶端,監控資料會全量統計,國內很多公司在用,例如美團點評、攜程、拼多多等,CAT跟下邊要介紹的Zipkin都需要在應用程式中埋點,對程式碼侵入性強,我們傾向於選擇對程式碼無侵入的產品,所以淘汰了CAT
Zipkin: 由Twitter公司開發並開源,Java語言實現,侵入性相對於CAT要低一點,需要對web.xml之類的配置檔案做修改,但依然對程式碼有侵入,也沒有選擇
Pinpoint: 一個韓國團隊開源的產品,運用了位元組碼增強技術,只需要在啟動時新增啟動引數即可,對程式碼無侵入,目前支援Java和PHP語言,底層採用HBase來儲存資料,探針收集的資料粒度非常細,但效能損耗大,因其出現的時間較長,完成度也很高,應用的公司較多
SkyWalking: 國人開源的產品,主要開發人員來自於華為,2019年4月17日Apache董事會批准SkyWalking成為頂級專案,支援Java、.Net、NodeJs等探針,資料儲存支援Mysql、Elasticsearch等,跟Pinpoint一樣採用位元組碼注入的方式實現程式碼的無侵入,探針採集資料粒度粗,但效能表現優秀,且對雲原生支援,目前增長勢頭強勁,社群活躍,中文文件沒有語言障礙
綜合考慮,我們選擇了SkyWalking
SkyWalking
官方有兩句話介紹SkyWalking:
SkyWalking是分散式系統的應用程式效能監視工具,專為微服務、雲原生架構和基於容器(Docker、K8S、Mesos)架構而設計
SkyWalking是觀察性分析平臺和應用效能管理系統。提供分散式追蹤、服務網格遙測分析、度量聚合和視覺化一體化解決方案
SkyWalking架構
SkyWalking採用元件式開發,易於擴充套件,主要元件作用如下:
Skywalking Agent: 採集tracing
(呼叫鏈資料)和metric
(指標)資訊並上報,上報通過HTTP或者gRPC方式傳送資料到Skywalking Collector
Skywalking Collector : 鏈路資料收集器,對agent傳過來的tracing
和metric
資料進行整合分析通過Analysis Core
模組處理並落入相關的資料儲存中,同時會通過Query Core
模組進行二次統計和監控告警
Storage: Skywalking的儲存,支援以ElasticSearch
、Mysql
、TiDB
、H2
等作為儲存介質進行資料儲存
UI: Web視覺化平臺,用來展示落地的資料,目前官方採納了RocketBot作為SkyWalking的主UI
SkyWalking介面
- 儀表盤
儀表盤主要包含Service Dashboard和Database Dashboard
Service Dashboard內分別有Global、Service、Endpoint、Instance皮膚,展示了全域性以及服務、端點、例項的詳細資訊
Database Dashboard內可以展示資料庫的響應時間、響應時間分佈、吞吐量、SLA、慢SQL等詳細資訊,便於直觀展示資料庫狀態
- 拓撲圖
SkyWalking能夠根據獲取的資料自動繪製服務之間的呼叫關係圖,並能識別常見的服務顯示在圖示上,例如圖上的kafka、H2服務
每條連線的顏色反應了服務之間的呼叫延遲情況,可以非常直觀的看到服務與服務之間的呼叫狀態,連線中間的點能點選,可顯示兩個服務之間鏈路的平均響應時間、吞吐率以及SLA等資訊
- 追蹤皮膚
能夠顯示請求的程式碼內部執行情況,一個完整的請求都經過了哪些服務、執行了哪些程式碼方法、每個方法的執行時間、執行狀態等詳細資訊,快速定位程式碼問題
- 告警皮膚
寫在最後
SkyWalking目前還處在高速發展的階段,我們在生產環境部署,遇到了一系列的問題,例如資料量過大影象斷點,影象顯示慢,與elasticsearch版本不相容等,遇到問題所能查詢的資料也有限,還需謹慎上線生產,但從Github上可以看到產品仍在快速更新不斷完善,相信未來SkyWalking的發展也會越來越好,感謝開源
相關文章推薦閱讀: