APM系統SkyWalking介紹

公司最近在構建服務化平臺,須要上線APM系統,本篇文章簡單的介紹SkyWalkinggit

APM

APM全稱Application Performance Management應用性能管理,目的是經過各類探針採集數據,收集關鍵指標,同時搭配數據呈現以實現對應用程序性能管理和故障管理的系統化解決方案github

Zabbix、Premetheus、open-falcon等監控系統主要關注服務器硬件指標與系統服務運行狀態等,而APM系統則更重視程序內部執行過程指標和服務之間鏈路調用狀況的監控,APM更有利於深刻代碼找到請求響應「慢」的根本問題,與Zabbix之類的監控是互補關係web

目前市面上開源的APM系統主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是參考Google的Dapper實現的sql

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同樣採用字節碼注入的方式實現代碼的無侵入,探針採集數據粒度粗,但性能表現優秀,且對雲原生支持,目前增加勢頭強勁,社區活躍,中文文檔沒有語言障礙app

綜合考慮,咱們選擇了SkyWalkingelasticsearch

SkyWalking

官方有兩句話介紹SkyWalking:分佈式

SkyWalking是分佈式系統的應用程序性能監視工具,專爲微服務、雲原生架構和基於容器(Docker、K8S、Mesos)架構而設計

SkyWalking是觀察性分析平臺和應用性能管理系統。提供分佈式追蹤、服務網格遙測分析、度量聚合和可視化一體化解決方案

SkyWalking架構

SkyWalking採用組件式開發,易於擴展,主要組件做用以下:

Skywalking Agent: 採集tracing(調用鏈數據)和metric(指標)信息並上報,上報經過HTTP或者gRPC方式發送數據到Skywalking Collector

Skywalking Collector : 鏈路數據收集器,對agent傳過來的tracingmetric數據進行整合分析經過Analysis Core模塊處理並落入相關的數據存儲中,同時會經過Query Core模塊進行二次統計和監控告警

Storage: Skywalking的存儲,支持以ElasticSearchMysqlTiDBH2等做爲存儲介質進行數據存儲

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的發展也會愈來愈好,感謝開源


掃碼關注公衆號查看更多實用文章

相關文章推薦閱讀:

相關文章
相關標籤/搜索