創建網絡
docker network create skywalking-network
docker compose 安裝SkyWalking
docker-compose.yaml
文件
version: "3"
services:# SkyWalking OAP server with Elasticsearch storageskywalking-oap:image: apache/skywalking-oap-server:8.9.0container_name: skywalking-oapports:- "12800:12800"- "11800:11800"networks:- skywalking-networkdepends_on:skywalking-elasticsearch:condition: service_healthy # 等待ES健康檢查environment:- SW_STORAGE=elasticsearch- TZ=Asia/Shanghai- SW_STORAGE_ES_CLUSTER_NODES=skywalking-elasticsearch:9200#volumes:# - ./oap-config:/skywalking/config # 掛載本地目錄到容器中# Elasticsearchskywalking-elasticsearch:image: elasticsearch:7.16.3container_name: skywalking-elasticsearchports:- "19200:9200"- "19300:9300"networks:- skywalking-networkenvironment:- discovery.type=single-node- TZ=Asia/Shanghai- ingest.geoip.downloader.enabled=false # 禁用GeoIP下載healthcheck: # 添加健康檢查test: [ "CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"'" ]interval: 10stimeout: 10sretries: 20ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536mem_limit: 2g#volumes:# - ./es-data:/usr/share/elasticsearch/data/nodes # 掛載本地目錄到容器中# SkyWalking UIskywalking-ui:image: apache/skywalking-ui:8.9.0container_name: skywalking-uiports:- "18080:8080"networks:- skywalking-networkenvironment:- SW_OAP_ADDRESS=http://skywalking-oap:12800- TZ=Asia/Shanghaivolumes:- ./ui-config:/app/config # 掛載本地目錄到容器中
networks:skywalking-network:external:name: skywalking-network
詳細說明
-
Elasticsearch 服務
- 使用
elasticsearch:7.14.0
鏡像。 - 啟用單節點模式,設置 JVM 參數以優化內存使用。
- 啟用安全功能,設置
elastic
用戶的密碼。 - 掛載卷
elasticsearch-data
以持久化數據。 - 映射端口 19200 和 19300。
- 使用
-
SkyWalking OAP Server 服務
- 使用
apache/skywalking-oap-server:8.6.0-es7
鏡像。 - 配置 Elasticsearch 作為存儲,設置集群節點地址、用戶名和密碼。
- 映射端口 11800 和 12800。
- 依賴于 Elasticsearch 服務。
- 使用
-
SkyWalking UI 服務
- 使用
apache/skywalking-ui:8.6.0
鏡像。 - 配置 OAP Server 的地址。
- 映射端口 18080。
- 依賴于 OAP Server 服務。
- 使用
-
網絡和卷
- 定義了一個名為
skywalking-net
的橋接網絡,確保所有服務在同一網絡中。 - 定義了一個卷
elasticsearch-data
,用于持久化 Elasticsearch 的數據。
- 定義了一個名為
啟動服務
在包含 docker-compose.yml
文件的目錄中運行以下命令啟動服務:
docker compose up -d
驗證
-
檢查 Elasticsearch 是否正常運行
curl -u elastic:elastic http://127.0.0.1:19200
-
檢查 OAP Server 是否正常運行
查看 OAP Server 的日志,確認它是否成功連接到 Elasticsearch:docker logs skywalking-oap
-
訪問 SkyWalking UI
打開瀏覽器,訪問http://172.30.112.19:18080
,您應該能夠看到 SkyWalking 的界面。
2. 客戶端代碼集成
2.1 下載 SkyWalking Agent
從 SkyWalking 官方網站下載對應版本的 Agent。
wget https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz
tar -xvzf apache-skywalking-apm-8.6.0.tar.gz
cd apache-skywalking-apm-bin
2.2 配置 SkyWalking Agent
編輯 agent/config/agent.config
文件,配置以下參數:
# SkyWalking Agent 名稱
SW_AGENT_NAME=springboot-skywalking-demo
# Collector 服務地址
SW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800
# 鏈路的最大 Span 數量
SW_AGENT_SPAN_LIMIT=2000
2.3 啟動應用
在啟動 Spring Boot 應用時,通過 -javaagent
參數指定 SkyWalking Agent 的路徑。
java -javaagent:/path/to/skywalking-agent.jar \
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800 \
-DSW_AGENT_NAME=springboot-skywalking-demo \
-jar your-springboot-app.jar
jar包地址(官網):https://skywalking.apache.org/downloads/
阿里云:https://mirrors.aliyun.com/apache/skywalking/
運行起來就是這樣
自己可以進行調用,然后記得修改時間(有的版本在下面):
使用文檔
SkyWalking UI 使用文檔
SkyWalking UI 提供了豐富的功能,用于監控和分析分布式系統的性能和調用鏈路。以下是 SkyWalking UI 的主要功能和使用方法:
1. 儀表盤 (Dashboard)
儀表盤提供了全局和當前服務的運行狀態和監控指標,包括:
- 調用熱力圖 (Calls HeatMap):顯示請求數量和響應時間。
- 應用平均告警 (Avg Application Alarm):顯示應用的告警信息。
- 慢服務 (Slow Service):顯示響應時間最長的服務。
- 應用吞吐量 (Application Throughput):顯示每分鐘的調用次數 (CPM)。
2. 拓撲圖 (Topology)
拓撲圖以圖形化方式展示服務之間的依賴關系和調用鏈路,包括:
- 拓撲結構圖 (Topology Map):顯示服務之間的調用關系。
- 概覽 (Overview):顯示服務的總體運行狀態。
- SLA (Service Level Agreement):顯示服務的可用率。
- 每分鐘調用 (Calls Per Minute):顯示每分鐘的調用次數。
- 平均響應時間 (Avg Response Time):顯示服務的平均響應時間。
3. 服務 (Service)
服務頁面提供了特定服務的詳細信息,包括:
- 平均吞吐量 (Avg Throughput):顯示服務的平均吞吐量。
- 平均響應時間 (Avg Response Time):顯示服務的平均響應時間。
- 平均可用率 (Avg SLA):顯示服務的平均可用率。
- 依賴圖 (Dependency Map):顯示服務的依賴關系。
4. 端點 (Endpoint)
端點頁面提供了特定端點的詳細調用數據,包括:
- 調用次數 (Call Count):顯示端點的調用次數。
- 平均響應時間 (Avg Response Time):顯示端點的平均響應時間。
- 錯誤率 (Error Rate):顯示端點的錯誤率。
- 調用鏈路 (Trace):顯示端點的調用鏈路。
5. 追蹤 (Trace)
追蹤頁面提供了具體的調用鏈路數據,包括:
- Trace ID:唯一標識一次調用的 ID。
- 調用鏈路:顯示每次調用的詳細鏈路,包括每個節點的響應時間、調用順序等。
6. 性能剖析 (Performance Analysis)
性能剖析頁面提供了對特定端點的性能分析,包括:
- 采樣分析:對端點進行采樣分析,查看詳細的堆棧信息。
- 任務列表:顯示當前的性能分析任務。
- 任務詳情:查看任務的詳細信息,包括實例信息、操作類型、操作時間等。
7. 日志 (Log)
日志頁面提供了服務的日志信息,包括:
- 服務日志:顯示服務的日志信息。
- 瀏覽器日志:顯示瀏覽器的日志信息。
- 追蹤 ID:通過追蹤 ID 查看跨服務的整體流程日志。
8. 告警 (Alarm)
告警頁面展示了觸發告警的列表,包括:
- 實例告警:顯示實例相關的告警信息。
- 請求超時:顯示請求超時相關的告警信息。
9. 事件 (Event)
事件頁面展示了服務實例的啟動和端點的調用等事件信息。
10. 時間選擇器 (Time Selector)
時間選擇器用于設定統計指標的時間范圍,所有指標數據展示都依賴于這個時間范圍。
官方文檔
SkyWalking 的官方文檔提供了詳細的使用指南和配置說明,建議參考以下鏈接:
- SkyWalking 官方文檔
- SkyWalking 中文文檔
通過這些功能和文檔,您可以全面監控和分析分布式系統的性能和調用鏈路,快速定位和解決性能問題。