分布式鏈路追蹤 skywalking 指南
什么是skywalking?
SkyWalking是一個開源的可觀察性平臺,用于收集,分析,聚合和可視化來自本地或者云服務(wù)中的數(shù)據(jù)。即使在整個云環(huán)境中,SkyWalking也能提供一種簡便的方法來維護您的分布式系統(tǒng)的清晰視圖。它是一個現(xiàn)代的APM(Application Performance Monitor 應(yīng)用性能監(jiān)測軟件),專門為基于云、容器的分布式系統(tǒng)而設(shè)計。
SkyWalking提供了用于在許多不同情況下觀察和監(jiān)視分布式系統(tǒng)的解決方案,并通過agent方式,做到高性能、低損耗、無侵入性,與類似的功能組件如:Zipkin、Pinpoint、CAT相比,skywalking無論是從性能還是社區(qū)活躍度方面考慮,都具有一定的優(yōu)勢。
skywalking監(jiān)控維度
skywalking從三個維度提供可觀察項功能,分別是:服務(wù),服務(wù)實例,端點
服務(wù):表示一組/一組工作負(fù)載,這些工作負(fù)載為傳入請求提供相同的行為。
服務(wù)實例:服務(wù)組中的每個單獨工作負(fù)載都稱為實例。像pods在Kubernetes中一樣,它不必是單個OS進程,但是,如果您使用agent代理,則實例實際上是一個真正的OS進程。
端點:服務(wù)中用于傳入請求的路徑,例如HTTP URI路徑或gRPC服務(wù)類+方法簽名。
skywalking架構(gòu)
從邏輯上看,skywalking分為四個部分:探針,平臺后端,存儲和UI。
-
探針:收集數(shù)據(jù)并重新格式化以符合SkyWalking的要求(不同的探針支持不同的來源)。
- 平臺后端:支持?jǐn)?shù)據(jù)聚合,分析和流處理,涵蓋跟蹤,指標(biāo)和日志。
- 存儲:設(shè)備通過開放/可插入的界面存儲SkyWalking數(shù)據(jù)。您可以選擇現(xiàn)有的實現(xiàn),例如ElasticSearch,H2,MySQL,TiDB,InfluxDB,或者實現(xiàn)自己的實現(xiàn)。
- UI:是一個高度可定制的基于Web的界面,允許SkyWalking最終用戶可視化和管理SkyWalking數(shù)據(jù)
UI 界面
登陸后展示所有已接入服務(wù)
服務(wù)
拓?fù)鋱D
鏈路追蹤
JVM
單擊服務(wù)名 admin-center-server -> instance -> JVM
點擊對應(yīng)服務(wù)即可查看對應(yīng)服務(wù)所有信息
服務(wù)實例(Service Instance) :上述的一組工作負(fù)載中的每一個工作負(fù)載稱為一個實例。就像 Kubernetes 中的 pods 一樣, 服務(wù)實例未必就是操作系統(tǒng)上的一個進程。但當(dāng)你在使用 Agent 的時候, 一個服務(wù)實例實際就是操作系統(tǒng)上的一個真實進程。
端點(Endpoint) :對于特定服務(wù)所接收的請求路徑, 如 HTTP 的 URI 路徑和 gRPC 服務(wù)的類名 + 方法簽名。
這里,我們可以看到 Spring Boot 應(yīng)用的一個端點,為 API 接口 /demo/echo
數(shù)據(jù)庫
名詞解釋
提供篩選功能。每塊都包含一些指標(biāo)。若打開時沒有數(shù)據(jù)選擇右上角時間范圍查看,
Apdex(Application Performance Index,應(yīng)用性能指數(shù))
服務(wù)吞吐量,單位為CPM(calls per minute,每分鐘的調(diào)用次數(shù))
端點百分位,包括 p99, p95, p90, p75, p50,單位為毫秒
Overview(全局)
Service(服務(wù))
Instance(實例)
Endpoint(端點)
Topology(拓?fù)洌?/span>
Trace(追蹤)
Overview 指標(biāo)
Successful Rate(%):當(dāng)前服務(wù)的請求成功率;
Service Load (CPM / PPM)數(shù)字:每分鐘調(diào)用次數(shù)(CPM),如果是TCP,表示每分鐘的數(shù)據(jù)包數(shù)(PPM);
Service Avg Response Time(ms):當(dāng)前服務(wù)平均響應(yīng)時間;
Service Apdex 折線圖:當(dāng)前服務(wù)一段時間內(nèi)的Apdex分?jǐn)?shù);
Service Response Time Percentile(ms):當(dāng)前服務(wù)的百分比響應(yīng)延時;
Successful Rate(%)折線圖:當(dāng)前服務(wù)一段時間內(nèi)的請求成功率;
Service Load (CPM / PPM)折線圖:當(dāng)前服務(wù)一段時間內(nèi)的每分鐘調(diào)用次數(shù);
Service Throughput(Bytes):服務(wù)吞吐量,只適用于TCP服務(wù);
Message Queue Consuming Count:消息隊列消費數(shù);
Message Queue Avg Consuming Latency(ms):消息隊列平均延遲時間;
Service Instances Load(CPM / PPM):每個實例每分鐘請求數(shù);
Slow Service Instance(ms):每個服務(wù)實例平均延時;
Service Instance Successful Rate(%):服務(wù)實例的請求成功率。
Instance 指標(biāo)
Service Instance Throughput(Bytes):當(dāng)前實例的吞吐流量;
Service Instance Successful Rate(%):當(dāng)前實例調(diào)用成功比率;
Service Instance Latency(ms):當(dāng)前實例響應(yīng)延時;
JVM CPU(Java Service)%:當(dāng)前實例JVM的CPU占用百分比(相對于主機);
JVM Memory (Java Service)(MB):當(dāng)前實例的內(nèi)存占用大小;
共四個指標(biāo)instance_jvm_memory_heap(堆內(nèi)存使用)、instance_jvm_memory_heap_max(最大堆內(nèi)存)、instance_jvm_memory_noheap(直接內(nèi)存使用)、- instance_jvm_memory_noheap_max(最大直接內(nèi)存)
JVM GC Time(ms):JVM 垃圾回收時間,包含young gc和old gc;
JVM GC Count:JVM垃圾回收次數(shù),包含young gc count和old gc count;
JVM Thread Count(java service):當(dāng)前實例的線程數(shù);
JVM Thread State Count (Java Service):當(dāng)前實例的各狀態(tài)線程數(shù);
JVM Class Count (Java Service):當(dāng)前實例類的計數(shù)。
Endpoint指標(biāo)
Slow Endpoints in Current Service(ms):當(dāng)前服務(wù)每個端點的平均響應(yīng)時間;
Successful Rate in Current Service(%):當(dāng)前服務(wù)每個端點的請求成功率;
Endpoint Load:當(dāng)前端點每個時間段的請求量;
Endpoint Avg Response Time(ms):當(dāng)前端點每個時間段的平均請求響應(yīng)時間;
Endpoint Response Time Percentile(ms):當(dāng)前端點每個時間段的響應(yīng)時間占比;
Endpoint Successful Rate(%):當(dāng)前端點每個時間段的請求成功率;

浙公網(wǎng)安備 33010602011771號