qinfengge

qinfengge

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

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 极简入门

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。