目 录CONTENT

文章目录

若依微服务版集成SkyWalking 10.1.0实战指南

Administrator
2025-09-03 / 0 评论 / 1 点赞 / 50 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2025-09-03,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

若依微服务版集成SkyWalking 10.1.0实战指南

Apache SkyWalking作为一款优秀的APM工具,为若依微服务架构提供了强大的分布式追踪和可视化监控能力。本文将详细介绍如何将若依微服务版本与SkyWalking 10.1.0进行集成。

准备工作

前置条件

在开始集成前,请确保具备以下条件:

  1. 已成功部署若依微服务版(包括Nacos、Gateway、Auth、System等核心服务)
  2. 已部署SkyWalking 10.1.0服务(参考:在k8s集群中部署skywalking
  3. 各微服务可通过网络访问SkyWalking OAP服务

集成步骤详解

1. 添加Maven依赖

在若依各微服务模块(如ruoyi-gateway、ruoyi-auth、ruoyi-system等)的pom.xml中添加SkyWalking相关依赖:

<!-- 如果想在项目代码中获取链路TraceId,则需要引入此依赖 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>9.3.0</version>
</dependency>

<!-- 自定义功能相关, 比如自定义tag -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-opentracing</artifactId>
    <version>9.3.0</version>
</dependency>

<!-- SkyWalking日志记录logback插件 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>9.3.0</version>
</dependency>

2. 配置Logback日志

修改各微服务的logback.xml文件,添加SkyWalking相关的日志配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="false">
    <contextName>ruoyi-cloud</contextName>
    <property name="log.charset" value="utf-8" />
    <property name="log.pattern" value="%red(%d{yyyy-MM-dd HH:mm:ss}) [%tid] %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%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.TraceIdPatternLogbackLayout">
                <pattern>${log.pattern}</pattern>
            </layout>
            <charset>${log.charset}</charset>
        </encoder> 
    </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">
                <pattern>${log.pattern}</pattern>
            </layout>
        </encoder>
    </appender>

    <!--普通日志输出到控制台-->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="grpc-log" />
    </root>
</configuration>

3. Kubernetes部署配置

张师傅使用的是kustomize作为k8s的yaml编排工具,其写法大致如下:

# app2sky.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi-system
spec:
  template:
    spec:
      volumes:
        - name: sidecar
          emptyDir: {}
      initContainers:
        - name: sidecar
          image: sidecar-image
          command:
            - cp
            - '-r'
            - /skywalking/agent
            - /sidecar
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar

      containers:
        - name: ruoyi-system
          env:
            - name: METADATA_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: METADATA_DEPLOYMENT
              valueFrom:
                fieldRef:
                  fieldPath: 'metadata.labels[''app'']'
                  # METADATA_NAMESPACE与METADATA_DEPLOYMENT主要是用于填充SW_AGENT_NAME的值,用于skywalking的链路追踪
            - name: JAVA_TOOL_OPTIONS
              value: -javaagent:/sidecar/agent/skywalking-agent.jar
            - name: SW_AGENT_NAME
              value: "$(METADATA_NAMESPACE)::$(METADATA_DEPLOYMENT)"
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: 'skywalking-skywalking-helm-oap.skywalking.svc:11800' # 改成你的oap服务地址
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar
# kustomization.yaml
images:
  - name: sidecar-image
    newName: apache/skywalking-java-agent
    newTag: 9.4.0-java8

配置说明:

  • 通过补丁文件app2sky.yaml定义工作容器与初始化容器,共享sidecar卷用于将SkyWalking Agent复制到容器中
  • 使用downwardAPI引用获取当前Pod的元数据(命名空间和应用标签),用于构建服务标识
  • 定义环境变量METADATA_NAMESPACEMETADATA_DEPLOYMENT,用于填充SW_AGENT_NAME的值,实现skywalking的链路追踪
  • JAVA_TOOL_OPTIONS为Java的JVM参数,用于加载SkyWalking Agent
  • 最终通过环境变量将SkyWalking Agent路径传递给JVM

常见问题处理

1. 微服务未在SkyWalking UI中显示

检查以下几点:

  1. SkyWalking OAP服务是否正常运行
  2. 各微服务的启动参数是否正确配置
  3. 网络连接是否正常,确保微服务能访问OAP服务端口

2. 日志中没有显示TraceId

确认logback.xml配置是否正确,特别是TraceIdPatternLogbackLayout的配置。

验证集成效果

集成完成后,可以通过以下方式验证:

  1. 启动所有若依微服务,访问张师傅的若依系统:若依
  2. 访问张师傅的SkyWalking UI界面,查看各服务是否正常注册:skywalking
  3. 在若依系统中进行一些业务操作,观察调用链路是否正常显示
  4. 检查日志中是否包含TraceId信息
    skywalking.png

总结

通过本文的介绍,您已经了解了如何将若依微服务版本与SkyWalking 10.1.0进行集成。这种集成方案能够提供完整的链路追踪能力,提升系统的可观测性。

参考文档

  1. 在k8s集群中部署skywalking
  2. SkyWalking官方文档
  3. 若依官方文档
1

评论区