APM系統(tǒng)SkyWalking入門(mén)介紹
APM全稱(chēng)Application Performance Management應(yīng)用性能管理,目的是通過(guò)各種探針采集數(shù)據(jù),收集關(guān)鍵指標(biāo),同時(shí)搭配數(shù)據(jù)呈現(xiàn)以實(shí)現(xiàn)對(duì)應(yīng)用程序性能管理和故障管理的系統(tǒng)化解決方案。
Zabbix、Premetheus、open-falcon等監(jiān)控系統(tǒng)主要關(guān)注服務(wù)器硬件指標(biāo)與系統(tǒng)服務(wù)運(yùn)行狀態(tài)等,而APM系統(tǒng)則更重視程序內(nèi)部執(zhí)行過(guò)程指標(biāo)和服務(wù)之間鏈路調(diào)用情況的監(jiān)控,APM更有利于深入代碼找到請(qǐng)求響應(yīng)“慢”的根本問(wèn)題,與Zabbix之類(lèi)的監(jiān)控是互補(bǔ)關(guān)系
目前市面上開(kāi)源的APM系統(tǒng)主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是參考Google的Dapper實(shí)現(xiàn)的
CAT: 是由國(guó)內(nèi)美團(tuán)點(diǎn)評(píng)開(kāi)源的,基于Java語(yǔ)言開(kāi)發(fā),目前提供Java、C/C++、Node.js、Python、Go等語(yǔ)言的客戶(hù)端,監(jiān)控?cái)?shù)據(jù)會(huì)全量統(tǒng)計(jì),國(guó)內(nèi)很多公司在用,例如美團(tuán)點(diǎn)評(píng)、攜程、拼多多等,CAT跟下邊要介紹的Zipkin都需要在應(yīng)用程序中埋點(diǎn),對(duì)代碼侵入性強(qiáng),我們傾向于選擇對(duì)代碼無(wú)侵入的產(chǎn)品,所以淘汰了CAT
Zipkin: 由Twitter公司開(kāi)發(fā)并開(kāi)源,Java語(yǔ)言實(shí)現(xiàn),侵入性相對(duì)于CAT要低一點(diǎn),需要對(duì)web.xml之類(lèi)的配置文件做修改,但依然對(duì)代碼有侵入,也沒(méi)有選擇
Pinpoint: 一個(gè)韓國(guó)團(tuán)隊(duì)開(kāi)源的產(chǎn)品,運(yùn)用了字節(jié)碼增強(qiáng)技術(shù),只需要在啟動(dòng)時(shí)添加啟動(dòng)參數(shù)即可,對(duì)代碼無(wú)侵入,目前支持Java和PHP語(yǔ)言,底層采用HBase來(lái)存儲(chǔ)數(shù)據(jù),探針收集的數(shù)據(jù)粒度非常細(xì),但性能損耗大,因其出現(xiàn)的時(shí)間較長(zhǎng),完成度也很高,應(yīng)用的公司較多
SkyWalking: 國(guó)人開(kāi)源的產(chǎn)品,主要開(kāi)發(fā)人員來(lái)自于華為,2019年4月17日Apache董事會(huì)批準(zhǔn)SkyWalking成為頂級(jí)項(xiàng)目,支持Java、.Net、NodeJs等探針,數(shù)據(jù)存儲(chǔ)支持Mysql、Elasticsearch等,跟Pinpoint一樣采用字節(jié)碼注入的方式實(shí)現(xiàn)代碼的無(wú)侵入,探針采集數(shù)據(jù)粒度粗,但性能表現(xiàn)優(yōu)秀,且對(duì)云原生支持,目前增長(zhǎng)勢(shì)頭強(qiáng)勁,社區(qū)活躍,中文文檔沒(méi)有語(yǔ)言障礙
SkyWalking
SkyWalking是分布式系統(tǒng)的應(yīng)用程序性能監(jiān)視工具,專(zhuān)為微服務(wù)、云原生架構(gòu)和基于容器(Docker、K8S、Mesos)架構(gòu)而設(shè)計(jì)
SkyWalking是觀(guān)察性分析平臺(tái)和應(yīng)用性能管理系統(tǒng)。提供分布式追蹤、服務(wù)網(wǎng)格遙測(cè)分析、度量聚合和可視化一體化解決方案
SkyWalking是一個(gè)開(kāi)源APM系統(tǒng),包括對(duì)Cloud Native體系結(jié)構(gòu)中的分布式系統(tǒng)的監(jiān)視,跟蹤,診斷功能。 核心功能如下。
服務(wù),服務(wù)實(shí)例,端點(diǎn)指標(biāo)分析
根本原因分析
服務(wù)拓?fù)鋱D分析
服務(wù),服務(wù)實(shí)例和端點(diǎn)依賴(lài)關(guān)系分析
檢測(cè)到慢速服務(wù)和端點(diǎn)
性能優(yōu)化
分布式跟蹤和上下文傳播
數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)指標(biāo)。 檢測(cè)慢速數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)語(yǔ)句(包括SQL語(yǔ)句)。
報(bào)警
SkyWalking支持從多種來(lái)源和多種格式收集遙測(cè)(跟蹤和度量)數(shù)據(jù),包括
SkyWalking格式的Java,.NET Core,NodeJS和PHP自動(dòng)儀器代理
SkyWalking格式的手動(dòng)儀器Go代理。
Istio遙測(cè)格式
由Istio控制的服務(wù)網(wǎng)格中的Envoy gRPC訪(fǎng)問(wèn)日志服務(wù)(ALS)格式
特使指標(biāo)服務(wù)格式。
Zipkin v1 / v2格式。
Jaeger gRPC格式。
SkyWalking架構(gòu)
[圖片上傳失敗...(image-92156f-1580045804024)]
SkyWalking采用組件式開(kāi)發(fā),易于擴(kuò)展,主要組件作用如下:
Skywalking Agent: 采集tracing(調(diào)用鏈數(shù)據(jù))和metric(指標(biāo))信息并上報(bào),上報(bào)通過(guò)HTTP或者gRPC方式發(fā)送數(shù)據(jù)到Skywalking Collector
Skywalking Collector : 鏈路數(shù)據(jù)收集器,對(duì)agent傳過(guò)來(lái)的tracing和metric數(shù)據(jù)進(jìn)行整合分析通過(guò)Analysis Core模塊處理并落入相關(guān)的數(shù)據(jù)存儲(chǔ)中,同時(shí)會(huì)通過(guò)Query Core模塊進(jìn)行二次統(tǒng)計(jì)和監(jiān)控告警
Storage: Skywalking的存儲(chǔ),支持以ElasticSearch、Mysql、TiDB、H2等作為存儲(chǔ)介質(zhì)進(jìn)行數(shù)據(jù)存儲(chǔ)
UI: Web可視化平臺(tái),用來(lái)展示落地的數(shù)據(jù),目前官方采納了RocketBot作為SkyWalking的主UI
SkyWalking界面

儀表盤(pán)主要包含Service Dashboard和Database Dashboard
Service Dashboard內(nèi)分別有Global、Service、Endpoint、Instance面板,展示了全局以及服務(wù)、端點(diǎn)、實(shí)例的詳細(xì)信息
Database Dashboard內(nèi)可以展示數(shù)據(jù)庫(kù)的響應(yīng)時(shí)間、響應(yīng)時(shí)間分布、吞吐量、SLA、慢SQL等詳細(xì)信息,便于直觀(guān)展示數(shù)據(jù)庫(kù)狀態(tài)

- 拓?fù)鋱D

SkyWalking能夠根據(jù)獲取的數(shù)據(jù)自動(dòng)繪制服務(wù)之間的調(diào)用關(guān)系圖,并能識(shí)別常見(jiàn)的服務(wù)顯示在圖標(biāo)上,例如圖上的kafka、H2服務(wù)
每條連線(xiàn)的顏色反應(yīng)了服務(wù)之間的調(diào)用延遲情況,可以非常直觀(guān)的看到服務(wù)與服務(wù)之間的調(diào)用狀態(tài),連線(xiàn)中間的點(diǎn)能點(diǎn)擊,可顯示兩個(gè)服務(wù)之間鏈路的平均響應(yīng)時(shí)間、吞吐率以及SLA等信息
- 追蹤面板

能夠顯示請(qǐng)求的代碼內(nèi)部執(zhí)行情況,一個(gè)完整的請(qǐng)求都經(jīng)過(guò)了哪些服務(wù)、執(zhí)行了哪些代碼方法、每個(gè)方法的執(zhí)行時(shí)間、執(zhí)行狀態(tài)等詳細(xì)信息,快速定位代碼問(wèn)題
-
告警面板
image.png
