公司最近在構建服務化平台,需要上線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等詳細信息,便於直觀展示數據庫狀態

- 拓撲圖

文章未完,全部內容請關注公眾號【運維咖啡吧】或個人網站https://ops-coffee.cn查看,運維咖啡吧專注於原創精品內容分享,感謝您的支持

