开发者

Springboot项目集成SkyWalking链路追踪系统实战指南

开发者 https://www.devze.com 2025-08-16 10:22 出处:网络 作者: guyougao
目录Springboot项目集成SkyWalking链路追踪系统1. 准备工作1.1 部署SkyWalking1.2 下载 S编程kyWaandroidlking Agent2. 配置Java Agent需要的主要参数2.1 使用jar命令启动2.1.1 方式一2.1.2 方式二2.1.3 参数区别2.2
目录
  • Springboot项目集成SkyWalking链路追踪系统
  • 1. 准备工作
    • 1.1 部署SkyWalking
    • 1.2 下载 S编程kyWaandroidlking Agent
  • 2. 配置Java Agent需要的主要参数
    • 2.1 使用jar命令启动
      • 2.1.1 方式一
      • 2.1.2 方式二
      • 2.1.3 参数区别
    • 2.2 利用idea启动
      • 2.2.1 打开idea开发工具Run-》Edit Configurations
      • 2.2.2 配置启动参数
    • 2.3 容器化服务部署(Kubernetes、docker)
      • 2.3.1 拷贝文件
      • 2.3.2 环境变量(ENV)配置
  • 3. 验证是否连接成功
    • 4. 日志对接
      • 4.1 在springboot项目中导入相关依赖
        • 4.2 logback.XML配置
          • 4.3 验证日志是否接入成功

          Springboot项目集成SkyWalking链路追踪系统

          将 SkyWalking 链路追踪系统集成到 Spring Boot 项目中,可以帮助你监控和跟踪微服务架构中的请求流,获取详细的性能数据、调用链信息等。下面是如何在 Spring Boot 项目中集成 SkyWalking 链路追踪的基本步骤。

          1. 准备工作

          1.1 部署SkyWalking

          使用的版本:9.2.0

          参考文档:使用docker部署spring boot并接入skywalking的方法

          网址地址:https://www.jb51.net/article/210119.htm

          1.2 下载 SkyWalking Agent

          同样在Skywalking的官网中下载Java Agent:https://skywalking.apache.org/downloads/

          Springboot项目集成SkyWalking链路追踪系统实战指南

          下载后解压,获取目录skywalking-agent,放在合适的路径上。

          Springboot项目集成SkyWalking链路追踪系统实战指南

          2. 配置Java Agent需要的主要参数

          在启动 Spring Boot 应用时,添加 SkyWalking agent 配置。用于重写 agent/config/agent.config 配置文件中的配置参数值。主要配置参数如下:

          1. 解压后的 SkyWalking agent 文件路径
          -javaagent:/path/to/skywalking-agent/skywalking-agent.jar
          1. 指定你的服务名称,SkyWalking 会以这个名称显示在监控面板中。SW_AGENT_NAME的命名规则,采用双冒号 (如CTOS::CONTAINER_SIT),冒号前的文本字符串将作为组名。
          agent.service_name=${SW_AGENT_NAME:Your_ApplicationName} 
          1. 指定 SkyWalking 后端服务的 IP 和端口(默认是 11800,若你使用其他端口,请替换)。
          collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
          1. 考虑到安全因素,部署的skywalking增加了gRPC(11880端口)连接是需要token认证。需要看部署时候是否配置SW_AUTHENTICATION。
          agent.authentication=${SW_AGENT_AUTHENTICATION:}

          2.1 使用jar命令启动

          在启动 Spring Boot 应用时,添加 SkyWalking agent 配置。

          把skywalking-agent.jar地址、your-service-name、your-collector-ip:port、your-authentication-token、your-spring-boot-app替换为实际值。

          2.1.1 方式一

          java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \
          -Dskywalking.agent.service_name=your-service-name \
          -Dskywalking.collector.backend_service=your-collector-ip:port \
          -Dskywalking.agent.authentication=your-authentication-token \
          -jar your-spring-boot-app.jar

          2.1.2 方式二

          java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar=agent.service_name=your-service-name,collector.backend_service=your-collector-ip:port,agent.authentication=your-authentication-token -jar your-spring-boot-app.jar

          2.1.3 参数区别

          通过方式一和方式二,可以看到使用方式一中-D设置参数多了skywalking前缀

          2.2 利用idea启动

          2.2.1 打开idea开发工具Run-》Edit Configurations

          Springboot项目集成SkyWalking链路追踪系统实战指南

          2.2.2 配置启动参数

          方式一

          点击Modify options -》Add VM option

          Springboot项目集成SkyWalking链路追踪系统实战指南

          方式二

          VM option中配置

          -javaagent:/path/to/skywalking-agent/skywalking-agent.jar=agent.service_name=your-service-name,collector.backend_service=your-collector-ip:port,agent.authentication=your-authentication-token

          Springboot项目集成SkyWalking链路追踪系统实战指南

          方式三

          个人比较喜欢采用环境变量的方法接入,方式如下

          VM option中配置

          -javaagent:/path/to/skywalking-agent/skywalking-agent.jar

          点击Modify options -》Environment variables,新增环境变量

          Springboot项目集成SkyWalking链路追踪系统实战指南

          环境变量描述
          SW_AGENT_NAME服务名
          SW_AGENT_COLLECTOR_BACKEND_SERVICES注册地址
          SSW_AGENT_AUTHENTICATIONgRPC认证的token

          2.3 容器化服务部署(Kubernetes、Docker)

          2.3.1 拷贝文件

          使用容器化部署,需要把skywalking-agent目录拷贝在镜像里面中,利用dockerfile

          # 替换image为自己使用的镜像
          FROM image
          COPY ./skywalking-agent /usr/local/skywalking-agent

          使用build命令生成新的基础镜像

          docker build -t new_image .

          2.3.2 环境变量(ENV)配置

          环境变量描述
          JAVA_TOOL_OPTIONS额外的 JVM
          SW_AGENT_NAME服务名
          SW_AGENT_COLLECTOR_BACKEND_SERVICES注册地址
          SSW_AGENT_AUTHENTICATIONgRPC认证的token

          JAVA_TOOL_OPTIONS的value配置为

          # 替换为skywalking-agent.jar在容器中的实际地址
          -javaagent:/path/to/skywalking-agent/skywalking-agent.jar

          3. 验证是否连接成功

          启动应用后,访问js SkyWalking 后端(通常是 http://127.0.0.1:8080,取决于你的 SkyWalking 后端配置)查看你的应用是否已经在 SkyWalking 控制台上显示。

          Springboot项目集成SkyWalking链路追踪系统实战指南

          但是这时候我们发现,打开Log,发现并没有日志。如果如果有日志需求,我们可以根据下一步操作接入服务日志。

          4. 日志对接

          在skywalking的UI端有一个日志的模块,用于收集客户端的日志,默认是没有数据的,那么需要如何将项目中产生日志数据传输到skywalking中

          4.1 在springboot项目中导入相关依赖

                  <!--打印skywalking的TraceId到日志-->
                  <dependency>
                      <groupId>org.apphpache.skywalking</groupId>
                      <artifactId>apm-toolkit-trace</artifactId>
                      <version>9.2.0</version>
                  </dependency>
                  <dependency>
                      <groupId>org.apache.skywalking</groupId>
                      <artifactId>apm-toolkit-logback-1.x</artifactId>
                      <version>9.2.0</version>
                  </dependency>
                  <dependency>
                      <groupId>org.apache.skywalking</groupId>
                      <artifactId>apm-toolkit-opentracing</artifactId>
                      <version>9.2.0</version>
                  </dependency>

          部署的时候可以替换自己使用的实际版本。

          4.2 logback.xml配置

          <?xml version="1.0" encoding="UTF-8"?>
          <configuration scan="true" scanPeriod="60 seconds" debug="false">
              <springProperty scope="context" name="applicationName" source="spring.application.name"/>
              <!-- 日志存放路径 -->
              <property name="log.path" value="logs/app" />
              <!-- 日志输出格式 -->
              <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ,[%X{tid}]  [%thread] %-5level %logger{50} - [%method:%line] %msg%n" />
              <!-- 控制台输出 -->
              <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
                  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                      <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                          <Pattern>${log.pattern}</Pattern>
                      </layout>
                  </encoder>
              </appender>
              <!-- 设置异步方式上报 -->
              <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
                  <discardingThreshold>0</discardingThreshold>
                  <queueSize>1024</queueSize>
                  <neverblock>true</neverBlock>
                  <appender-ref ref="console"/>
              </appender>
              <!--skywalking日志上报-->
              <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
                  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                      <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"&gjavascriptt;
                          <Pattern>${log.pattern}</Pattern>
                      </layout>
                  </encoder>
              </appender>
              <!--日志文件-->
              <appender name="file_info" class="ch.qos.logback.core.FileAppender">
                  <file>${log.path}/info.log</file>
                  <!-- 循环政策:基于时间创建日志文件 -->
                  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                      <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                          <Pattern>${log.pattern}</Pattern>
                      </layout>
                  </encoder>
                  <!-- 输出INFO级别以上的日志 -->
                  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                      <level>INFO</level>
                  </filter>
              </appender>
              <appender name="file_error" class="ch.qos.logback.core.FileAppender">
                  <file>${log.path}/error.log</file>
                  <!-- 循环政策:基于时间创建日志文件 -->
                  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                      <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                          <Pattern>${log.pattern}</Pattern>
                      </layout>
                  </encoder>
                  <!-- 输出ERROR级别日志 -->
                  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                      <level>ERROR</level>
                  </filter>
              </appender>
              <root level="trace">
                  <appender-ref ref="grpc-log" />
                  <appender-ref ref="ASYNC"/>
              </root>
          </configuration>

          4.3 验证日志是否接入成功

          Springboot项目集成SkyWalking链路追踪系统实战指南

          本篇主要以实战为主,文档中存在不足之处请指出,谢谢!

          到此这篇关于Springboot项目集成SkyWalking链路追踪系统实战指南的文章就介绍到这了,更多相关Springboot SkyWalking链路追踪内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号