RuoYi-Vue-Plus使用skywalking进行链路追踪

近期需要对程序的接口进行并发测试，使用 jmeter 测过后觉得不太满意。主要是上传和数据库查询处理的操作，想知道上传和数据库处理的耗时分别是多少。看了下若依的文档，发现是支持 skywalking 的，那就好办了。

安装

使用 skywalking 需要先安装依赖，主要是 2 个文件，一个是 server 端一个是 agent。
安装方式也有 2 种，一种是直接下载安装，比较适合开发环境，一种是用 docker-compose 用配置文件一键部署。

直接安装

在官方网站下载文件

APM 尽量下载老版本，最新版在 Windows 启动可能有些问题

Agent 选择对应的语言，这里是 Java，可以选择最新版，记住下载的版本，在添加 maven 依赖时需要对应上。

下载完成后解压即可。

解压 APM 后，进入 bin 文件夹下启动即可

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

有其它问题请查看 logs 文件夹下的日志

Docker 启动

这种方式更适合部署在生产环境，因为增加了 elasticsearch 中间件对日志进行了处理

Copy
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 启动失败的问题

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

这是由于 elasticsearch 没有权限往对应的路径写入日志文件
解决方法也很简单，赋予对应的文件夹权限即可

Copy
sudo chmod 777 -R /docker/elk/elasticsearch

修改完成后重新启动，打开 http://ip:9200 查看 es 输出的信息

使用

安装完成后在 RuoYi-Vue-Plus 中使用 skywalking 也很简单，只需要将注释的相关代码放开即可

ruoyi-admin/pom.xml 取消注释 maven，并设置对应下载的 Agent 版本

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

启动

接下来在程序启动时注入 Agent

选择增加运行时参数

Copy
-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 包

配置成功后会在控制台输出一些日志

访问

接下来你可以使用 http://IP:18080 访问 skywalking 的 webUI 了

可以在右上方设置语言和自动刷新

Skywalking 链路监控
SpringBoot 整合 SkyWalking 8.X (包含 Logback 日志采集)
add 增加 skywalking 集成 默认注释不开启
Skywalking Download
SkyWalking 极简入门