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. 最终显示在控制台上的效果

相关推荐
张小洛2 小时前
Spring 常用类深度剖析(工具篇 04):CollectionUtils 与 Stream API 的对比与融合
java·后端·spring·spring工具类·spring utils·spring 类解析
算.子2 小时前
【Spring AI 实战】七、Embedding 向量化与向量数据库选型对比
人工智能·spring·embedding
YanDDDeat2 小时前
【Spring】事务注解失效与传播机制
java·后端·spring
ywf12153 小时前
Spring aop 五种通知类型
java·前端·spring
慕容卡卡3 小时前
你所不知道的RAG那些事
java·开发语言·人工智能·spring boot·spring cloud
隐退山林3 小时前
JavaEE进阶:Spring Web MVC入门(1)
前端·spring·java-ee
砍材农夫3 小时前
spring-ai 第十二mcp server调用入门(http协议)
人工智能·spring·http
952363 小时前
SpringMVC
后端·学习·spring
一叶飘零_sweeeet3 小时前
Spring AI 与 Spring AI Alibaba怎么选?
java·spring·spring ai
我登哥MVP3 小时前
【SpringMVC笔记】 - 8 - 文件上传与下载
java·spring boot·spring·servlet·tomcat·maven