一、APM介紹
二、分布式鏈路追蹤
三、Apache Skywalking(Incubator)簡介
四、SkyWalking 原理架構圖
五、SkyWalking 核心模塊
六、SkyWalking服務端安裝
七、Skywalking Agent安裝
八、Skywalking UI 管理后臺介紹
一、APM介紹
APM (Application Performance Management )應用性能管理 ,通過各種探針采集并上報數據,收集關鍵指標,同時搭配數據展示以實現對應用程序性能管理和故障管理的系統化解決方案。
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,這里主要介紹 SkyWalking ,它是一款優秀的國產 APM 工具,包括了分布式追蹤、性能指標分析、應用和服務依賴分析等。
Zabbix、Premetheus、open-falcon等監控系統主要關注服務器硬件指標與系統服務運行狀態 等,而APM系統則更重視程序內部執行過程指標和服務之間鏈路調用情況的監控 ,APM更有利于深入代碼找到請求響應“慢”的根本問題,與Zabbix之類的監控是互補關系。
基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
二、分布式鏈路追蹤
下圖是常見的微服務的框架,4 個實例,2 個 MySQL、1 個 Redis。實際上它有兩次完全不同的請求進來:有一次的一個請求會訪問 Redis,再去訪問 MySQL;另外一個可能走到另外的服務上,然后直接去 MySQL。整個分布式追蹤的目的是什么?是為了讓我們最終在頁面上、UI上、和數據上能夠復現這個過程。我們要拿到整個完整的鏈路,包括精確的響應時間,訪問的方法、訪問的 circle,訪問的 Redis 的 key等,這些是我們在做分布式追蹤的時候需要展現的一個完整的信息。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
項目地址:https://gitee.com/zhijiantianya/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
三、Apache Skywalking(Incubator)簡介
分布式系統的應用程序性能監視工具,專為微服務、云原生架構和基于容器(Docker、K8s、Mesos)架構而設計。
Apache Skywalking(Incubator)專門為微服務架構和云原生架構系統而設計并且支持分布式鏈路追蹤的APM系統。Apache Skywalking(Incubator)通過加載 探針-非侵入式 的方式收集應用調用鏈路信息,并對采集的調用鏈路信息進行分析,生成應用間關系和服務間關系以及服務指標。Apache Skywalking (Incubating)目前支持多種語言,其中包括Java,.Net Core,Node.js和Go語言。另外社區還發展出了一個叫OpenTracing的組織,旨在推進調用鏈監控的一些規范和標準工作。
Skywalking支持從6個可視化維度剖析分布式系統的運行情況。
總覽視圖(Global view)是應用和組件的全局視圖,其中包括組件和應用數量,應用的告警波動,慢服務列表以及應用吞吐量;
拓撲圖(topology view)從應用依賴關系出發,展現整個應用的拓撲關系;
應用視圖從單個應用的角度,展現應用的上下游關系,TopN的服務和服務器,JVM的相關信息以及對應的主機信息。
服務視圖關注單個服務入口的運行情況以及此服務的上下游依賴關系,依賴度,幫助用戶針對單個服務的優化和監控;
追蹤(trace)展現了調用的單次請求經過的所有埋點以及每個埋點的執行時長;
告警視圖(alarm)根據配置閾值針對應用、服務器、服務進行實時告警。
四、SkyWalking 原理架構圖
五、SkyWalking 核心模塊
SkyWalking采用組件式開發,易于擴展,主要組件作用如下:
1. Skywalking Agent :鏈路數據采集tracing(調用鏈數據)和metric(指標)信息并上報,上報通過HTTP或者gRPC方式發送數據到Skywalking Collector。
2. Skywalking Collector :鏈路數據收集器,對agent傳過來的tracing和metric數據進行整合分析通過Analysis Core模塊處理并落入相關的數據存儲中,同時會通過Query Core模塊進行二次統計和監控告警。
3. Storage :Skywalking的存儲,支持以ElasticSearch、Mysql、TiDB、H2等主流存儲作為存儲介質進行數據存儲,H2僅作為臨時演示單機用。
4. SkyWalking UI :Web可視化平臺,用來展示落地的數據,目前官方采納了RocketBot作為SkyWalking的主UI。
本文通過Docker容器安裝Skywalking,并示例整合apisix網關、Spring Boot微服務項目進行APM(Application Performance Management)應用性能管理,檢測從接口網關到微服務實例、再到數據庫、緩存等存儲層之間的鏈路追蹤。
六、SkyWalking服務端安裝
安裝環境:
操作系統:CentOS7,配置為4核8G
Docker版本:Docker version 19.03.12, build 48a66213fe
安裝工具:docker-compose,版本:docker-compose version 1.26.2, build eefe0d31
skywalking版本:8.1.0
elasticsearch版本:7.5.0
1、創建目錄
mkdir-p/data/ent/skywalking cd/data/ent/skywalking
2、編寫docker-compose.yml
vimdocker-compose.yml #添加以下內容 version:'3.8' services: elasticsearch: image:docker.elastic.co/elasticsearch/elasticsearch:7.5.0 container_name:elasticsearch restart:always ports: -9200:9200 healthcheck: test:["CMD-SHELL","curl--silent--faillocalhost:9200/_cluster/health||exit1"] interval:30s timeout:10s retries:3 start_period:40s environment: -discovery.type=single-node -bootstrap.memory_lock=true -"ES_JAVA_OPTS=-Xms512m-Xmx512m" -TZ=Asia/Shanghai ulimits: memlock: soft:-1 hard:-1 skywalking-oap: image:apache/skywalking-oap-server:8.1.0-es7 container_name:skywalking-oap depends_on: -elasticsearch links: -elasticsearch restart:always ports: -11800:11800 -12800:12800 healthcheck: test:["CMD-SHELL","/skywalking/bin/swctl"] interval:30s timeout:10s retries:3 start_period:40s environment: TZ:Asia/Shanghai SW_STORAGE:elasticsearch7 SW_STORAGE_ES_CLUSTER_NODES:elasticsearch:9200 skywalking-ui: image:apache/skywalking-ui:8.1.0 container_name:skywalking-ui depends_on: -skywalking-oap links: -skywalking-oap restart:always ports: -28080:8080 environment: TZ:Asia/Shanghai SW_OAP_ADDRESS:skywalking-oap:12800
3、啟動服務
#啟動(docker和docker-compose的安裝不再詳介紹) docker-composeup-d
4、開放端口
firewall-cmd--zone=public--add-port=11800/tcp--permanent firewall-cmd--zone=public--add-port=12800/tcp--permanent firewall-cmd--zone=public--add-port=28080/tcp--permanent firewall-cmd--reload
5、訪問skywalking ui后臺,訪問地址為:http://服務器ip:28080
七、Skywalking Agent安裝
以java agent為例,下載skywalking項目,地址:https://www.apache.org/dyn/closer.cgi/skywalking/8.1.0/apache-skywalking-apm-es7-8.1.0.tar.gz
解壓下載后的文件,將agent文件夾復制至java項目下,執行java項目時,使用javaagent開啟skywalking agent
java-javaagent:agent/skywalking-agent.jar=agent.service_name=sab-service,collector.backend_service=192.168.35.226:11800-jarsab-manager.war--spring.profiles.active=local_dev
其中,agent.service_name為要注冊到skywalking的服務名稱,collector.backend_service為skywalking grpc注冊地址。
啟動無報錯,在skywalking ui后臺可查看服務是否已注冊成功到skywalking。
八、Skywalking UI 管理后臺介紹
1、首頁
儀表盤:查看被監控服務的運行狀態
拓撲圖:以拓撲圖的方式展現服務直接的關系,并以此為入口查看相關信息
追蹤:以接口列表的方式展現,追蹤接口內部調用過程
性能剖析:單獨端點進行采樣分析,并可查看堆棧信息
告警:觸發告警的告警列表,包括實例,請求超時等。
自動刷新:自動刷新當前數據內容
2、儀表盤
**查看全局服務基本性能指標**
第一欄:不同內容主題的監控面板,應用/數據庫/容器等
第二欄:操作,包括編輯/導出當前數據/導入展示數據/不同服務端點篩選展示
第三欄:不同緯度展示,服務/實例/端點
2.1、參數說明
2.1.1 Global全局維度
第一欄:Global、Server、Instance、Endpoint不同展示面板,可以調整內部內容
Services load:服務每分鐘請求數
Slow Services:慢響應服務,單位ms
Un-Health services(Apdex):Apdex性能指標,1為滿分。
Global Response Latency:百分比響應延時,不同百分比的延時時間,單位ms
Global Heatmap:服務響應時間熱力分布圖,根據時間段內不同響應時間的數量顯示顏色深度
底部欄:展示數據的時間區間,點擊可以調整。
2.1.2 Service實例維度
Service Apdex(數字):當前服務的評分
Service Apdex(折線圖):不同時間的Apdex評分
Successful Rate(數字):請求成功率
Successful Rate(折線圖):不同時間的請求成功率
Servce Load(數字):每分鐘請求數
Servce Load(折線圖):不同時間的每分鐘請求數
Service Avg Response Times:平均響應延時,單位ms
Global Response Time Percentile:百分比響應延時
Servce Instances Load:每個服務實例的每分鐘請求數
Show Service Instance:每個服務實例的最大延時
Service Instance Successful Rate:每個服務實例的請求成功率
2.1.3 Instance實例維度
Service Instance Load:當前實例的每分鐘請求數
Service Instance Successful Rate:當前實例的請求成功率
Service Instance Latency:當前實例的響應延時
JVM CPU:jvm占用CPU的百分比
JVM Memory(Java Service):JVM內存占用大小,單位MB
JVM GC Time:JVM垃圾回收時間,包含YGC和OGC
JVM GC Count:JVM垃圾回收次數,包含YGC和OGC
JVM Thread Count(Java Service):JVM生成的線程數
CLR XX:類似JVM虛擬機參數
2.1.4 Endpoint端點維度
Endpoint Load in Current Service:每個端點的每分鐘請求數
Slow Endpoints in Current Service:每個端點的最慢請求時間,單位ms
Successful Rate in Current Service:每個端點的請求成功率
Endpoint Load:當前端點每個時間段的請求數據
Endpoint Avg Response Time:當前端點每個時間段的請求行響應時間
Endpoint Response Time Percentile:當前端點每個時間段的響應時間占比
Endpoint Successful Rate:當前端點每個時間段的請求成功率
3、拓撲圖
SkyWalking能夠根據獲取的數據自動繪制服務之間的調用關系圖,并能識別常見的服務顯示在圖標上。每條連線的顏色 反應了服務之間的調用延遲 情況,可以非常直觀的看到服務與服務之間的調用狀態,連線中間的點能點擊,可顯示兩個服務之間鏈路的平均響應時間、吞吐率以及SLA等信息。
1:選擇不同的服務關聯拓撲
2:查看單個服務相關內容
3:服務間連接情況
4:分組展示服務拓撲
4、追蹤
顯示請求的響應內部執行情況,一個完整的請求都經過了哪些服務、執行了哪些代碼方法、每個方法的執行時間、執行狀態等詳細信息,快速定位代碼問題。
可通過選擇服務、實例、狀態和端點名稱來搜索調用鏈路,
可以點擊標記紅色的端點,查看異常信息
5、性能剖析
新建需要分析的端點,在左側列表顯示任務及對應的采樣請求,右側顯示端點鏈路及每個端點的堆棧信息。
6、告警
不同維度告警列表,可分為服務、端點和實例。
-
數據
+關注
關注
8文章
7081瀏覽量
89201 -
服務器
+關注
關注
12文章
9235瀏覽量
85648 -
APM
+關注
關注
1文章
71瀏覽量
13017
原文標題:分布式追蹤與監控:Skywalking介紹
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論