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

相关推荐
架构源启19 分钟前
Spring AI进阶系列(14)- 2026 可观测性最佳实践:从链路追踪到企业级 AI 治理落地
java·人工智能·spring
椰椰椰耶25 分钟前
[SpringCloud][12]Nacos配置中心详解,快速上手,Nacos和Eureka的区别
spring·spring cloud·eureka
来杯@Java10 小时前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
卷毛的技术笔记11 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
半旧夜夏14 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
云烟成雨TD15 小时前
Spring AI 1.x 系列【33】RAG Advisor 组件与四大分层架构
java·人工智能·spring
J2虾虾15 小时前
Spring AI Alibaba - Tools
服务器·人工智能·spring
J2虾虾18 小时前
Spring AI Alibaba - 人工介入(Human-in-the-Loop)
java·人工智能·spring
J2虾虾18 小时前
Spring AI Alibaba - Skills 技能
人工智能·python·spring
J2虾虾20 小时前
Spring AI Alibaba - 智能体作为工具(Agent Tool)
java·人工智能·spring