簡介
SkyWalking:一個開源的可觀察性平臺,用于收集,分析,聚合和可視化來自服務和云本機基礎結構的數據。SkyWalking提供了一種簡便的方法來維護您的分布式系統的清晰視圖,即使在整個云中也是如此。它是一種現代APM,專門為基于云的基于容器的分布式系統而設計。
網址:https://github.com/apache/skywalking
SkyWalking 的核心是數據分析和度量結果的存儲平臺,通過 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量數據,SkyWalking Collecter 對數據進行分析和聚合,存儲到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我們可以通過 SkyWalking UI 的可視化界面對最終的結果進行查看。Skywalking 支持從多個來源和多種格式收集數據:多種語言的 Skywalking Agent 、Zipkin v1/v2 、Istio 等數據格式。
架構主要分幾部分:
skywalking-collector:鏈路數據歸集器
skywalking-ui:web可視化平臺,用來展示落地的數據
skywalking-agent:探針,用來收集和發送數據到歸集器
storage:存儲,一般選擇elasticsearch
系統環境
- Java:1.8
- Elasticsearch:6.8.13
- SkyWalking:8.3.0
- 操作系統:centos7
- IP:192.168.43.87
安裝java和Elasticsearch6
網址:點擊
SkyWalking
網址:https://skywalking.apache.org/downloads/
SkyWalking分不同存儲版本,本文以ES6為例,
1 | cd /data |
如圖:
agent:agent探針模塊
bin:collector和web的啟動腳本
config:collector模塊配置目錄
oap-libs:依賴
webapp: web項目
創建用戶:
1 | #創建用戶 |
賦予權限:
1 | chown -R skywalking:skywalking /data/apache-skywalking/ |
SkyWalking OAP(skywalking-collector)
修改 OAP 配置文件 config/application.yml:
1 | cd /data/apache-skywalking/config/ |
配置文件中默認選擇的是H2數據源,切換成elasticsearch,
如下:
1 | ... |
如圖:
啟動OAP服務:
1 | su - skywalking |
日志輸出以下信息,證明啟動成功:
1 | SkyWalking OAP started successfully! |
防火墻配置,以 firewalld 為例,開放 12800 、 11800端口:
1 | systemctl status firewalld.service |
SkyWalking web
修改webapp/webapp.yml,將8080端口改為18080,
1 | cp /data/apache-skywalking/webapp/webapp.yml /data/apache-skywalking/webapp/webapp.yml_bak |
內容如下:
1 | server: |
保存后退出。
啟動web服務:
1 | su - skywalking |
日志輸出以下信息,證明啟動成功:
1 | SkyWalking Web Application started successfully! |
防火墻配置,以 firewalld 為例,開放 18080 端口:
1 | systemctl status firewalld.service |
訪問網站:http://ip:18080
1 | curl http://192.168.43.87:18080 |
如圖:
SkyWalking agent
agent的使用需要將/agent整個目錄拷貝到對應需要監控的服務器上,并修改/agent/config下的agent.config配置,
1 | # 不同的namespace會導致調用鏈路追蹤中斷 |
保存后退出。
agent.sample_n_per_3_secs配置說明:
在訪問量較少時,鏈路全量收集不會對系統帶來太大負擔,能夠完整的觀測到系統的運行狀況。但是在訪問量較大時,全量的鏈路收集,對鏈路收集的客戶端(agent探針)、服務端(SkyWalking OAP)、存儲器(例如說 Elastcsearch)都會帶來較大的性能開銷,甚至會影響應用的正常運行。在訪問量級較大的情況下,往往會選擇抽樣采樣,只收集部分鏈路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定義了 agent.sample_n_per_3_secs 配置項,設置每 3 秒可收集的鏈路數據的數量。
調用方式請查看:
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md
JAR file啟動項目時,配置 JVM 參數,加入配置 agent 的相關參數,命令行如下:
1 | java -javaagent:/data/apache-skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=appName1 -Dskywalking.collector.backend_service=192.168.43.87:11800 -jar xxxx.jar |
idea開發時,以windows環境為例,配置如下:
選擇XXXApplication.java(如:EurekaServerApplication.java),右擊選中 More Run/Debug -> Modify Run Configuration,在VM options,輸入:
1 | -javaagent:D:/java/other/agent/skywalking-agent.jar |
如圖: