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

相关推荐
yyyyyyykk39 分钟前
Spring知识点总结
数据库·mysql·spring
Minyy114 小时前
SpringBoot程序的创建以及特点,配置文件,LogBack记录日志,配置过滤器、拦截器、全局异常
xml·java·spring boot·后端·spring·mybatis·logback
ai大佬12 小时前
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
java·spring·自动化·api中转·apikey
来自星星的猫教授13 小时前
spring,spring boot, spring cloud三者区别
spring boot·spring·spring cloud
Bling_14 小时前
请求参数、路径参数、查询参数、Spring MVC/FeignClient请求相关注解梳理
java·spring·spring cloud·mvc
-曾牛15 小时前
企业级AI开发利器:Spring AI框架深度解析与实战
java·人工智能·python·spring·ai·rag·大模型应用
二进制独立开发15 小时前
[Trae 04.22+]适用于JAVA Spring开发的智能体提示词
spring·trae
大家都说我身材好17 小时前
Spring缓存注解深度实战:3大核心注解解锁高并发系统性能优化‌
spring·缓存·性能优化
都叫我大帅哥17 小时前
Spring AI中的ChatClient:从入门到精通,一篇搞定!
java·spring·ai编程
都叫我大帅哥17 小时前
《@SpringBootApplication:Spring Boot的"一键启动"按钮,还是程序员的"免死金牌"?》
java·后端·spring