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

相关推荐
YDS8293 小时前
Small Spring IOC篇:作用域和FactoryBean
java·后端·spring
雷一言说3 小时前
Spring AI 2.0 Modular RAG:接入 Rerank 重排模型
spring
学到老活到老3 小时前
第 22 集:Filter、Interceptor、AOP 都能拦截,为什么不能互换?
java·后端·spring
郭小李4 小时前
spring 中的 @EnableWebMvc注解和WebMvcConfigurer接口
java·后端·spring
CoderYanger5 小时前
Java EE 进阶:5. Spring IoC&DI(第二弹):Spring IoC
java·开发语言·spring boot·spring·面试·职场和发展·java-ee
霸道流氓气质6 小时前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
霸道流氓气质8 小时前
智能表单生成器:结构化输出契约、JSON Schema 驱动渲染与 EAV/JSONB 混合存储的 Vue3 + Spring AI 生产级实战
人工智能·spring·json
java_nnnn9 小时前
spring web mvc图书管理小案例
前端·spring·mvc
步行cgn21 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
步行cgn1 天前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc