springcloud接入skywalking作为应用监控

下载安装包

需要下载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配置文件更改

  1. 进入文件夹,更改application.yml文件

    cd /usr/local/skywalking/apache-skywalking-apm-bin/config

  2. 更改注册中心集群为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}

  3. 更改持久化使用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}

  4. 更改skywalking端口(8080很容易端口冲突)

进入文件夹

/usr/local/skywalking/apache-skywalking-apm-bin/webapp

修改application.yml

serverPort: ${SW_SERVER_PORT:-8334}
  1. 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可忽略)

  1. 进入文件夹

    /usr/local/skywalking/apache-skywalking-apm-bin/bin

  2. 将里面所有文件的JAVA_HOME设置为JDK17

    ......
    ......
    _RUNJAVA=/usr/local/java17/jdk-17.0.11/bin/java
    [ -z "$JAVA_HOME" ] && _RUNJAVA=java
    ......
    ......

设置skywalking开机自启

  1. 进入文件夹

    /etc/systemd/system

  2. 创建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

  3. 创建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

  4. 刷新配置

    systemctl enable skywalking1
    systemctl enable skywalking2
    systemctl daemon-reload # 刷新配置

  5. 启动skywalking命令

    systemctl start skywalking1 # 启动
    systemctl start skywalking2 # 启动
    systemctl status skywalking1 # 查看服务状态

  6. 完成
    打开浏览器ip:8334,即可看到控制台

【注】:关于为什么分两个service文件,我使用startup.sh编写自启动一直出错,不知道是什么原因。因此分两个文件设置。

应用接入skywalking

  1. 在启动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)

  1. 加上参数后的启动命令

    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 &

  2. 最终显示在控制台上的效果

相关推荐
雷神乐乐1 小时前
Spring学习(一)——Sping-XML
java·学习·spring
小林coding2 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
文大。2 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全
小马爱打代码3 小时前
Spring Boot 中 Map 的最佳实践
java·spring boot·spring
智慧老师8 小时前
Spring基础分析13-Spring Security框架
java·后端·spring
hanbarger11 小时前
mybatis框架——缓存,分页
java·spring·mybatis
龙少954314 小时前
【深入理解@EnableCaching】
java·后端·spring
啦啦右一20 小时前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring
荆州克莱1 天前
mysql中局部变量_MySQL中变量的总结
spring boot·spring·spring cloud·css3·技术
zquwei1 天前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring