Appearance
链路追踪之SKyWalking
Apache Skywalking 是什么? 如何优化? 自己百度. 下面介绍如何修改配置适配本项目.
先简单说一下这几个目录的作用:
- webapp: UI 前端(
web
监控页面)的jar
包和配置文件; - oap-libs: 后台应用的
jar
包,以及它的依赖jar
包,里边有一个server-starter-*.jar
就是启动程序; - config: 启动后台应用程序的配置文件,是使用的各种配置
- bin: 各种启动脚本,一般使用脚本
startup.*
来启动web
页面 和对应的 后台应用;- oapService.*: 默认使用的后台程序的启动脚本;(使用的是默认模式启动,还支持其他模式)
- oapServiceInit.*: 使用
init
模式启动;在此模式下,OAP服务器启动以执行初始化工作,然后退出 - oapServiceNoInit.*: 使用
no init
模式启动;在此模式下,OAP服务器不进行初始化。 - webappService.*: UI 前端的启动脚本;
- startup.*: 组合脚本,同时启动
oapService.*:
、webappService.*
脚本; - stop.sh 官方是没有提供的, 是提供发出来方便停止服务的.
- agent:
- skywalking-agent.jar: 代理服务
jar
包 - config: 代理服务启动时使用的配置文件
- plugins: 包含多个插件,代理服务启动时会加载改目录下的所有插件(实际是各种
jar
包) - optional-plugins: 可选插件,当需要支持某种功能时,比如
SpringCloud Gateway
,则需要把对应的jar
包拷贝到plugins
目录下;
- skywalking-agent.jar: 代理服务
启动服务端 + UI
下载官方8.2.0安装包: (http://skywalking.apache.org/downloads/ )或者去群文件下载作者修改好的压缩包
修改配置文件
conf/application.yml
yaml# 支持h2、mysql、es 、influxdb 这里使用 mysql, 生产推荐es storage: selector: ${SW_STORAGE:mysql} mysql: # 修改下面的 mysql 信息 properties: # 链接ip、端口和数据库 jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/acuity_sw?useSSL=false"} # 账号 dataSource.user: ${SW_DATA_SOURCE_USER:root} #密码 dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
# 支持h2、mysql、es 、influxdb 这里使用 mysql, 生产推荐es storage: selector: ${SW_STORAGE:mysql} mysql: # 修改下面的 mysql 信息 properties: # 链接ip、端口和数据库 jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/acuity_sw?useSSL=false"} # 账号 dataSource.user: ${SW_DATA_SOURCE_USER:root} #密码 dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
手动创建
acuity_sw
数据库sqlCREATE DATABASE IF NOT EXISTS `acuity_sw` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE IF NOT EXISTS `acuity_sw` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
oap-libs
目录下缺少mysql
的驱动程序,所以还需要下载mysql-connector-java-*.jar
放到oap-libs
目录. 我这里复制 mysql-connector-java-8.0.21.jar 到oap-libs启动:
cd bin # 启动 $ ./startup.sh
cd bin # 启动 $ ./startup.sh
验证
$ jps
93830 OAPServerStartUp
93835 skywalking-webapp.jar
93851 Jps
$ jps
93830 OAPServerStartUp
93835 skywalking-webapp.jar
93851 Jps
- 验证acuity_sw数据库多了很多表
- 修改
webapp/webapp.yml
里面的的端口号
yaml
server:
port: 12080 # 默认是8080
server:
port: 12080 # 默认是8080
- 访问UI页面: http://localhost:12080
- 至此,
Skywalking
的监控跟踪服务就准备完毕
注意: 在官方下载的包需要参考上述步骤修改, 群文件中下载我修改后的包, 只需要调整做第2、3步
配置客户端
修改
agent/config/agent.config
文件ini# 在UI上显示的服务名称 agent.service_name=${SW_AGENT_NAME:acuity-cloud}
# 在UI上显示的服务名称 agent.service_name=${SW_AGENT_NAME:acuity-cloud}
将
agent/optional-plugins/
中的如下插件移动到agent/plugins/
里面去apm-quartz-scheduler-2.x-plugin-8.2.0.jar # 定时任务
apm-quartz-scheduler-2.x-plugin-8.2.0.jar # 定时任务
apm-spring-annotation-plugin-8.2.0.jar
spring注解
apm-spring-tx-plugin-8.2.0.jar # spring事务
apm-trace-ignore-plugin-8.2.0.jar
自定义忽略追踪某些请求 (如nacos、eureka等定时请求)
apm-spring-cloud-gateway-2.1.x-plugin-8.2.0.jar
解决微服务项目 gateway 转发的问题
apm-spring-webflux-5.x-plugin-8.2.0.jar #
3. [下载apm-trace-ignore-plugin插件的配置文件](https://github.com/apache/skywalking/blob/master/apm-sniffer/optional-plugins/trace-ignore-plugin/apm-trace-ignore-plugin.config) 放到`agent/config/` 目录,取名为: apm-trace-ignore-plugin.config
```ini
# 需要被注入的地址
# /path/? 匹配任意单个字符
# /path/* 匹配任意数量的字符
# /path/** 匹配任意数量的字符并支持多级目录
# 多个路径使用逗号分隔, 比如: trace.ignore_path=/eureka/**,/consul/**
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/eureka/**}
3. [下载apm-trace-ignore-plugin插件的配置文件](https://github.com/apache/skywalking/blob/master/apm-sniffer/optional-plugins/trace-ignore-plugin/apm-trace-ignore-plugin.config) 放到`agent/config/` 目录,取名为: apm-trace-ignore-plugin.config
```ini
# 需要被注入的地址
# /path/? 匹配任意单个字符
# /path/* 匹配任意数量的字符
# /path/** 匹配任意数量的字符并支持多级目录
# 多个路径使用逗号分隔, 比如: trace.ignore_path=/eureka/**,/consul/**
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/eureka/**}
若是分布式部署, 将agent文件夹移动到跟spring-boot的jar同一台服务器上的任意目录. 如: /Users/acuity/tools/skywalking820/
配置每个服务的启动参数.
/Users/acuity/tools/skywalking820/agent/skywalking-agent.jar
要改成你自己的skywalking-agent.jar
存放路径# VM Options: (虚拟机参数) -Xms128M -Xmx192M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M -javaagent:/Users/acuity/tools/skywalking820/agent/skywalking-agent.jar
# VM Options: (虚拟机参数) -Xms128M -Xmx192M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M -javaagent:/Users/acuity/tools/skywalking820/agent/skywalking-agent.jar
Environment variables (环境变量)
SW_AGENT_NAME=acuity-msg-server
6. 若是java 启动,请用如下命令:
```shell
java -javaagent:/Users/acuity/tools/skywalking820/agent/skywalking-agent.jar -Dskywalking.agent.service_name=acuity-authority-server -jar acuity-authority-server.jar
6. 若是java 启动,请用如下命令:
```shell
java -javaagent:/Users/acuity/tools/skywalking820/agent/skywalking-agent.jar -Dskywalking.agent.service_name=acuity-authority-server -jar acuity-authority-server.jar
- 依次启动权限、认证、租户、网关等服务, 启动acuity-web后多访问几个页面
- 访问UI页面: http://localhost:12080 查看结果
注意 分布式部署在多台服务器时需要注意
- 假设有A、B、C 3台服务器. A服务安装nacos、mysql、skywalking等服务
- B服务器 启动 网关、认证、权限等服务
- C服务器 启动 消息、文件、租户等服务
那么,需要将 skywalking安装包解压后的文件夹下放在A服务器上, 然后参考前面的启动服务端 + UI
一节启动; 然后在B、C服务器上存放 文件夹里面的 agent
文件夹即可.