现在项目一般都是多实例,分布式部署,一个请求也许会需要多个项目模块响应,链路比较长。前端页面请求出现问题了,定位需要多个项目挨个查看日志,在生产环境日志量比较大,刷新的也比较快,会给问题定位带来很大的难度,所以链路跟踪是非常必要的。在工作中使用过zipkin和skywalking,也使用过arths,在最近项目选型链路跟踪软件果断选择了skywalking了,好处不多说,直接上从0开始部署方法。

一、ES安装

1、去ES官网下载(Download Elasticsearch | Elastic),选择linux版本,我选择的是7.14.0版本,没有使用最新的8,尽量不要用es6

2、上传elasticsearch-7.14.0-linux-x86_64.tar.gz到指定文件夹,执行tar -zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz解压缩

skywalking 集成java jvm skywalking 部署_elasticsearch

3、修改config/elasticsearch.yml,如下

skywalking 集成java jvm skywalking 部署_后端_02

 

skywalking 集成java jvm skywalking 部署_spring boot_03

4、创建用户组和用户,执行以下命令

groupadd elsearch

sudo useradd elsearch -g elsearch

passwd elsearch

skywalking 集成java jvm skywalking 部署_目标跟踪_04

5、赋权限,执行chown -R elsearch:elsearch elasticsearch-7.14.0

skywalking 集成java jvm skywalking 部署_目标跟踪_05

6、vi /etc/sysctl.conf,添加vm.max_map_count=262144,然后执行 sysctl -p生效配置

skywalking 集成java jvm skywalking 部署_目标跟踪_06

skywalking 集成java jvm skywalking 部署_后端_07

skywalking 集成java jvm skywalking 部署_spring boot_08

6、设置es密码

skywalking 集成java jvm skywalking 部署_后端_09

7、启动es (./elsearch -d 后台启动)

skywalking 集成java jvm skywalking 部署_spring boot_10

8、验证启动是否启动成功,浏览器输入:http://127.0.0.1:9200

skywalking 集成java jvm skywalking 部署_后端_11

 二、skywalking apm服务端搭建

1、去skywalking官网下载(Downloads | Apache SkyWalking),我选择的是8.7.0版本

skywalking 集成java jvm skywalking 部署_spring boot_12

2、上传apache-skywalking-apm-es7-8.7.0.tar.gz到指定文件夹,执行tar -zxvf apache-skywalking-apm-es7-8.7.0.tar.gz

skywalking 集成java jvm skywalking 部署_后端_13

 3、修改config/application.yml配置

skywalking 集成java jvm skywalking 部署_目标跟踪_14

 4、修改webapp/webapp.yml

skywalking 集成java jvm skywalking 部署_elasticsearch_15

5、启动bin/startup.sh

skywalking 集成java jvm skywalking 部署_后端_16

6、在浏览器访问:http://192.168.103.202:18088

skywalking 集成java jvm skywalking 部署_spring boot_17

三、skywalking agent部署

 1、去skywalking官网下载(Downloads | Apache SkyWalking

skywalking 集成java jvm skywalking 部署_elasticsearch_18

2、上传到指定目录,使用tar命令解压缩

skywalking 集成java jvm skywalking 部署_elasticsearch_19

3、修改agent/config/agent.config文件

skywalking 集成java jvm skywalking 部署_目标跟踪_20

四、项目中配置使用

需要项目所在服务器部署agent端,启动项目时指定使用agent即可

nohup java -javaagent:/usr/local/env/public/skywalking-agent/agent/skywalking-agent.jar=agent.service_name=project-name(sky显示的项目名)
-XX:+UseG1GC -server -jar project-name.1.0.0.jar(项目jar包)  > project-name.out 2>&1 &

总结:skywalking是本人工作这么多年,见过的最好用的链路跟踪监控软件,也比较推荐使用。skywalking对项目没有任何侵入性,性能瓶颈可视化,非常nice。但是使用了链路跟踪也会有一定的性能损耗,特别开启sql参数打印跟踪的情况下。有时候项目需要在前端页面response显示traceId,方便拿着traceId到apm端查看请求日志,这样定位问题会更加方便,可以解决90%的页面请求问题,有时间介绍下。