链路追踪框架
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
文档:https://skywalking.apache.org/docs/main/v9.4.0/readme/
中文文档: https://skyapm.github.io/document-cn-translation-of-skywalking/
docker部署在最后
1. 下载
SkyWalking OAP 服务、SkyWalking UI 服务
官网下载:
https://skywalking.apache.org/downloads/
在线下载:
wget https://dlcdn.apache.org/skywalking/9.4.0/apache-skywalking-apm-9.4.0.tar.gz
下载 Agents
在线下载:
wget https://dlcdn.apache.org/skywalking/java-agent/8.15.0/apache-skywalking-java-agent-8.15.0.tgz
2. 解压
习惯放到local路径下
cd /usr/local/
tar -zxvf apache-skywalking-apm-9.4.0.tar.gz -C /usr/local
tar -zxvf apache-skywalking-java-agent-8.15.0.tgz -C /usr/local
3. 配置SkyWalking OAP
避免端口冲突,更换 SkyWalking UI界面默认8080端口:
cd apache-skywalking-apm-bin
查看目录
ll
编辑yml文件,以8100端口为例:
vi webapp/application.yml
默认内存模式,更改为MySQL连接
vi config/application.yml
:set number 可查看行号
大概133 行 修改h2为mysql
storage:
selector: ${SW_STORAGE:mysql}
大概183-194行,确认MySQL连接信息(地址、账号、密码),记得新建数据库。
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:123456}
ESC :wq 保存并退出
下载MySQL驱动jar包到 /oap-libs
目录下
wget -P /usr/local/apache-skywalking-apm-bin/oap-libs https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.32/mysql-connector-j-8.0.32.jar
然后新建数据库 swtest
4. 启动 SkyWalking OAP 服务
sh bin/oapService.sh
查看启动日志:tail -f logs/skywalking-oap-server.log
最后一句为
50 [main] INFO [] - Version of OAP: 9.4.0-520d531
skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,记得放开端口。
端口开放:
开放指定端口
firewall-cmd --zone=public --add-port=11800/tcp --permanent
firewall-cmd --zone=public --add-port=12800/tcp --permanent
--zone #作用域
--add-port=11800/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
5. 启动 SkyWalking UI 服务
sh bin/webappService.sh
默认是8080端口,上面更换了
访问:
http://192.168.20.128:8100/
官方提供了两个脚本一起启动的脚本,这次启动无误后,下次可直接
sh bin/startup.sh
服务开机自启配置,参考8
6. Java 程序接入SkyWalking
6.1在linux中 通过jar包方式接入
写一个shell脚本,通过 -javaagent 参数进行 配置SkyWalking Agent来跟踪微服务
vi SkyWalking-Test-startup.sh
添加内容:
#!/bin/sh
# SkyWalking Agent 配置
# 配置Agent名字为项目的 `spring.application.name`
export SW_AGENT_NAME=SkyWalking-Test
# 配置 Collector 地址
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
#配置链路的最大Span数量,默认为 300
export SW_AGENT_SPAN_LIMIT=2000
# SkyWalking Agent jar 地址
export JAVA_AGENT=-javaagent:/usr/local/skywalking-agent/skywalking-agent.jar
# jar 启动
java -jar $JAVA_AGENT -jar SkyWalking-Test-0.01-SNAPSHOT.jar
赋权:
chmod u+x SkyWalking-Test-startup.sh
等同于:
java ‐javaagent:usr/local/skywalking-agent/skywalking-agent.jar ‐DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 ‐DSW_AGENT_NAME=SkyWalking-Test ‐jar SkyWalking-Test-0.01-SNAPSHOT.jar
6.2 在Windows中
IDEA中配置JVM参数,编辑VM Options,如果应用程序和SkyWalking部署在同一机器,backend_service可以不写
# skywalking‐agent.jar的本地磁盘的路径
-javaagent:F:\Apache\skywalking-agent\skywalking-agent.jar
# 在skywalking上显示的服务名
-Dskywalking.agent.service_name=SkyWalking-Test
# skywalking的collector服务的IP及端口
-Dskywalking.collector.backend_service=192.168.20.128:11800
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES
可以指定远程地址,但-javaagent必须绑定本地路径的 skywalking- agent.jar
IDEA新版添加JVM参数:
7.SkyWalking 自定义链路追踪
<!-- Skywalking 工具类-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.15.0</version>
</dependency>
只需要在业务方法上加上@Trace注解
在方法上增加@Tag或者@Tags。
@Tag 注解中 key = 方法名 ; value = returnedObj 返回值 arg[0] 参数
然后启动项目,再去刷新下项目,就有记录了
8.设置SkyWalking OAP 服务、SkyWalking UI 服务开机自启
准备设置一个.service,开机执行这个脚本文件,以此实现自启效果
系统启动脚本目录 /etc/systemd/system/
新建服务文件
vi /etc/systemd/system/skyWalking.service
添加:
[Unit]
Description=skyWalking
After=network.target remote-fs.target nss-lookup.target mysql8.service zookeeper.service kafka.service nacos-cluster.service
[Service]
Type=forking
ExecStart=sh /usr/local/apache-skywalking-apm-bin/bin/startup.sh start
PrivateTmp=true
[Install]
WantedBy=multi-user.target
按ESC :wq保存并退出
赋权:
chmod 754 /etc/systemd/system/skyWalking.service
设置开机自启:
systemctl enable skyWalking.service
重载配置
systemctl daemon-reload
可重启尝试脚本可行性(reboot)
查看状态
systemctl status skyWalking.service
1 使用docker部署SkyWalking 9.3.0
cd /opt/coisini/download
2 安装Docker Compose
手动下载,放到
/usr/local/bin/
目录下即可,方便全局调用
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
3 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
4 查看版本信息
docker-compose --version
5 创建docker-compose.yaml
vi docker-compose.yaml
version: '1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
container_name: elasticsearch
restart: always
ports:
- 9200:9200
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail 192.168.31.16:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- TZ=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:9.3.0
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
healthcheck:
test: ["CMD-SHELL", "/skywalking/bin/swctl"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
TZ: Asia/Shanghai
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: apache/skywalking-ui:9.3.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8088:8080
environment:
TZ: Asia/Shanghai
SW_OAP_ADDRESS: http://oap:12800
networks:
default:
name: sw_network
6 执行脚本(更新并启动服务):
docker-compose up -d
- up: 启动服务。
- -d: 在后台运行服务。
7 查看oap启动日志
docker logs oap -f --tail 100
访问:
192.168.31.16:8088
8 项目中应用
把agent下载到windows本地,并解压:
https://dlcdn.apache.org/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz
9 在项目启动时,添加参数
-javaagent:F:/Apache/skywalking-agent/skywalking-agent.jar
-Dskywalking.collector.backend_service=192.168.31.16:11800
-Dskywalking.agent.service_name=coisini-admin-service
主要配置三个参数
- agent.service_name=coisini-service
「必填」,用于指定服务名称- collector.backend_service=xx.xx.xx.xx:11800
- 11800:gRPC端口
- 12800:HTTP端口
「必填」,用于指定后端oap的地址
- agent.instance_name=coisini-service-01
「选填」,用于指定实例名称,如果不指定则在UI图上会显示UUID@IP
的格式
10 在pom.xml添加
<!--skywalking-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>9.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>9.3.0</version>
</dependency>
这样就集成完成了,项目启动之后,访问项目接口时,刷新http://192.168.31.16:8088/,就能看到数据
11 关于集成网关需要注意的事项
SkyWalking
对于 spring-cloud-gateway
默认不支持。
在skywalking-agent目录下:
需要将 F:/Apache/skywalking-agent/optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.3.0.jar
和 apm-spring-webflux-6.x-plugin-9.3.0.jar
复制到 F:/Apache/skywalking-agent/plugins
中就可以
END 暂时到这,感谢阅览