下载安装包
需要下载SkyWalking APM 和 Java Agent
链接: skywalking
安装
下载JDK17(可不配置环境变量)
目前skywalking 9.0及以上版本基本都不支持JDK8,需要JDK11-21,具体版本要求在官网查看。
我这里使用的是skywalking9.4.0,使用ORACLE JDK 17。链接: JDK17
压缩包我放在/usr/local/jdk17中,解压完成即可,可不配置到环境变量中。(因为服务器跑的程序用的是JDK8因此我不做环境变量配置)
tar -zxvf jdk-17.0.11_linux-x64_bin.tar.gz
文件上传Linux解压
压缩包我放在/usr/local/skywalking中
tar -zxvf apache-skywalking-apm-9.4.0.tar.gz
tar -zxvf apache-skywalking-java-agent-9.2.0.tgz
skywalking配置文件更改
-
进入文件夹,更改application.yml文件
cd /usr/local/skywalking/apache-skywalking-apm-bin/config
-
更改注册中心集群为nacos
cluster:
selector: ${SW_CLUSTER:nacos}
......
......
nacos:
serviceName: ${SW_SERVICE_NAME:"skywalking"}
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:xxx:8848}
# Nacos Configuration namespace
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"命名空间的ID"}
# Nacos auth username
username: ${SW_CLUSTER_NACOS_USERNAME:"nacos"}
password: ${SW_CLUSTER_NACOS_PASSWORD:"nacos"}
# Nacos auth accessKey
accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""}
secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""}
internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""}
internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1} -
更改持久化使用mysql
storage:
selector: ${SW_STORAGE:mysql}
......
......
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://xxx:3306/skywalking?rewriteBatchedStatements=true"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4} -
更改skywalking端口(8080很容易端口冲突)
进入文件夹
/usr/local/skywalking/apache-skywalking-apm-bin/webapp
修改application.yml
serverPort: ${SW_SERVER_PORT:-8334}
- MySQL的数据库连接驱动放入oap-libs
SkyWalking对应的oap-libs文件夹下没有MySQL的数据库连接驱动,后续启动会报错。可以用:mysql-connector-java-8.0.21.jar这个版本的数据库连接驱动,放入文件夹/usr/local/skywalking/apache-skywalking-apm-bin/oap-libs中
启动命令配置JDK17(若环境变量本来就为JDK17可忽略)
-
进入文件夹
/usr/local/skywalking/apache-skywalking-apm-bin/bin
-
将里面所有文件的JAVA_HOME设置为JDK17
......
......
_RUNJAVA=/usr/local/java17/jdk-17.0.11/bin/java
[ -z "$JAVA_HOME" ] && _RUNJAVA=java
......
......
设置skywalking开机自启
-
进入文件夹
/etc/systemd/system
-
创建skywalking1.service(用于启动oapService.sh)
[Unit]
Description=skywalking
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/java17/jdk-17.0.11"
ExecStart=/usr/local/skywalking/apache-skywalking-apm-bin/bin/oapService.sh
PrivateTmp=true
LimitNOFILE=65536[Install]
WantedBy=multi-user.target -
创建skywalking2.service(用于启动webappService.sh)
[Unit]
Description=skywalking
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/java17/jdk-17.0.11"
ExecStart=/usr/local/skywalking/apache-skywalking-apm-bin/bin/webappService.sh
PrivateTmp=true
LimitNOFILE=65536[Install]
WantedBy=multi-user.target -
刷新配置
systemctl enable skywalking1
systemctl enable skywalking2
systemctl daemon-reload # 刷新配置 -
启动skywalking命令
systemctl start skywalking1 # 启动
systemctl start skywalking2 # 启动
systemctl status skywalking1 # 查看服务状态 -
完成
打开浏览器ip:8334,即可看到控制台
【注】:关于为什么分两个service文件,我使用startup.sh编写自启动一直出错,不知道是什么原因。因此分两个文件设置。
应用接入skywalking
-
在启动JAR的命令中,加入参数即可
-javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=my-system -Dskywalking.collector.backend_service=ip:11800
javaagent:前面的压缩包解压路径下的jar包
Dskywalking.agent.service_name:接入的应用名称,可自定义不重复即可
Dskywalking.collector.backend_service:指定 SkyWalking Collector 的地址,应用程序将数据发送到该地址(端口默认为11800)
-
加上参数后的启动命令
nohup java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=xd-system -Dskywalking.collector.backend_service=ip:11800 -jar -Xms1024m -Xmx2048m my-system.jar --spring.cloud.bootstrap.name=bootstrap-test >/dev/null 2>&1 &
-
最终显示在控制台上的效果