qinfengge

qinfengge

醉后不知天在水,满船清梦压星河
github
email
telegram

RuoYi-Vue-Plus使用skywalking進行鏈路追蹤

近期需要對程序的接口進行並發測試,使用 jmeter 測過後覺得不太滿意。主要是上傳和資料庫查詢處理的操作,想知道上傳和資料庫處理的耗時分別是多少。看了下若依的文檔,發現是支持 skywalking 的,那就好辦了。

安裝#

使用 skywalking 需要先安裝依賴,主要是 2 個文件,一個是 server 端一個是 agent。
安裝方式也有 2 種,一種是直接下載安裝,比較適合開發環境,一種是用 docker-compose 用配置文件一鍵部署。

直接安裝#

官方網站下載文件

image

APM 盡量下載舊版本,最新版在 Windows 啟動可能有些問題

image

Agent 選擇對應的語言,這裡是 Java,可以選擇最新版,記住下載的版本,在添加 maven 依賴時需要對應上。

下載完成後解壓即可。

解壓 APM 後,進入 bin 文件夾下啟動即可

image

默認 web-ui 使用的是 8080 端口,如果你的端口已被佔用可以修改 webapp\webapp.yml 此文件

image

有其它問題請查看 logs 文件夾下的日誌

Docker 啟動#

這種方式更適合部署在生產環境,因為增加了 elasticsearch 中間件對日誌進行了處理

version: '3'

services:
  elasticsearch:
    image: elasticsearch:7.17.6
    container_name: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      # 設置集群名稱
      cluster.name: elasticsearch
      # 以單一節點模式啟動
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xms512m -Xmx512m"
    volumes:
      - /docker/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /docker/elk/elasticsearch/data:/usr/share/elasticsearch/data
      - /docker/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
    network_mode: "host"

  sky-oap:
    image: apache/skywalking-oap-server:8.9.1
    container_name: sky-oap
    ports:
      - "11800:11800"
      - "12800:12800"
    environment:
      JAVA_OPTS: -Xms512m -Xmx1g
      #記錄數據的有效期,單位天
      SW_CORE_RECORD_DATA_TTL: 7
      #分析指標數據的有效期,單位天
      SW_CORE_METRICS_DATA_TTL: 7
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: 127.0.0.1:9200
      TZ: Asia/Shanghai
    network_mode: "host"

  sky-ui:
    image: apache/skywalking-ui:8.9.1
    container_name: sky-ui
    ports:
      - "18080:18080"
    environment:
      SW_OAP_ADDRESS: http://127.0.0.1:12800
      TZ: Asia/Shanghai
      JAVA_OPTS: "-Dserver.port=18080"
    depends_on:
      - sky-oap
    network_mode: "host"

注意開啟其中的對應端口
直接啟動可能會報 elasticsearch 啟動失敗的問題

Error opening log file 'logs/gc.log': Permission denied

這是由於 elasticsearch 沒有權限往對應的路徑寫入日誌文件
解決方法也很簡單,賦予對應的文件夾權限即可

sudo chmod 777 -R /docker/elk/elasticsearch

修改完成後重新啟動,打開 http://ip:9200 查看 es 輸出的信息

image

使用#

安裝完成後在 RuoYi-Vue-Plus 中使用 skywalking 也很簡單,只需要將註釋的相關代碼放開即可

ruoyi-admin/pom.xml 取消註釋 maven,並設置對應下載的 Agent 版本

image

ruoyi-admin/src/main/resources/logback.xml 修改打印日誌

image

image

啟動#

接下來在程序啟動時注入 Agent

image

選擇增加運行時參數

-javaagent:D:\sky\skywalking-agent.jar
-Dskywalking.agent.service_name=ruoyi-auth
-Dskywalking.collector.backend_service=127.0.0.1:11800

對應的意思是
javaagent 探針對應的盤符位置
service_name 服務名
backend_service skywalking 的地址

javaagent 指的是下載的 Agent 解壓後的裡面的 jar 包
image

配置成功後會在控制台輸出一些日誌

image

訪問#

接下來你可以使用 http://IP:18080 訪問 skywalking 的 webUI 了

image

可以在右上方設置語言和自動刷新

image

Skywalking 鏈路監控
SpringBoot 整合 SkyWalking 8.X (包含 Logback 日誌採集)
add 增加 skywalking 集成 默認註釋不開啟
Skywalking Download
SkyWalking 極簡入門

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。