若依微服务版集成SkyWalking 10.1.0实战指南
Apache SkyWalking作为一款优秀的APM工具,为若依微服务架构提供了强大的分布式追踪和可视化监控能力。本文将详细介绍如何将若依微服务版本与SkyWalking 10.1.0进行集成。
准备工作
前置条件
在开始集成前,请确保具备以下条件:
- 已成功部署若依微服务版(包括Nacos、Gateway、Auth、System等核心服务)
- 已部署SkyWalking 10.1.0服务(参考:在k8s集群中部署skywalking)
- 各微服务可通过网络访问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_NAMESPACE
和METADATA_DEPLOYMENT
,用于填充SW_AGENT_NAME的值,实现skywalking的链路追踪 - JAVA_TOOL_OPTIONS为Java的JVM参数,用于加载SkyWalking Agent
- 最终通过环境变量将SkyWalking Agent路径传递给JVM
常见问题处理
1. 微服务未在SkyWalking UI中显示
检查以下几点:
- SkyWalking OAP服务是否正常运行
- 各微服务的启动参数是否正确配置
- 网络连接是否正常,确保微服务能访问OAP服务端口
2. 日志中没有显示TraceId
确认logback.xml配置是否正确,特别是TraceIdPatternLogbackLayout的配置。
验证集成效果
集成完成后,可以通过以下方式验证:
- 启动所有若依微服务,访问张师傅的若依系统:若依
- 访问张师傅的SkyWalking UI界面,查看各服务是否正常注册:skywalking
- 在若依系统中进行一些业务操作,观察调用链路是否正常显示
- 检查日志中是否包含TraceId信息
总结
通过本文的介绍,您已经了解了如何将若依微服务版本与SkyWalking 10.1.0进行集成。这种集成方案能够提供完整的链路追踪能力,提升系统的可观测性。
评论区