SkyWalking使用:Spring Cloud Alibaba场景

目录

一、环境准备

[二、步骤 1:部署 SkyWalking 服务端(OAP + UI)](#二、步骤 1:部署 SkyWalking 服务端(OAP + UI))

[1. 下载并解压 SkyWalking 安装包](#1. 下载并解压 SkyWalking 安装包)

[2. 配置存储介质(核心:推荐 Elasticsearch)](#2. 配置存储介质(核心:推荐 Elasticsearch))

[3. 启动 OAP 和 UI](#3. 启动 OAP 和 UI)

[4. 验证服务端启动](#4. 验证服务端启动)

[三、步骤 2:Spring Cloud Alibaba 应用接入 SkyWalking Agent](#三、步骤 2:Spring Cloud Alibaba 应用接入 SkyWalking Agent)

[1. 拷贝 SkyWalking Agent 到应用服务器](#1. 拷贝 SkyWalking Agent 到应用服务器)

[2. 配置 Agent(可选,也可通过启动参数覆盖)](#2. 配置 Agent(可选,也可通过启动参数覆盖))

[3. 应用启动时挂载 Agent](#3. 应用启动时挂载 Agent)

[4. 多环境 / 容器化部署适配](#4. 多环境 / 容器化部署适配)

[(1)Spring Boot 多环境配置(无侵入)](#(1)Spring Boot 多环境配置(无侵入))

[(2)Docker 部署(Dockerfile 示例)](#(2)Docker 部署(Dockerfile 示例))

[(3)K8s 部署(ConfigMap + 启动参数)](#(3)K8s 部署(ConfigMap + 启动参数))

[四、步骤 3:验证集成效果](#四、步骤 3:验证集成效果)

[五、关键扩展:日志与链路 TraceID 关联(可选)](#五、关键扩展:日志与链路 TraceID 关联(可选))

[1. 引入依赖(无需新增,Spring Cloud Alibaba 通常已包含)](#1. 引入依赖(无需新增,Spring Cloud Alibaba 通常已包含))

[2. 修改 logback.xml 配置](#2. 修改 logback.xml 配置)

六、常见问题与解决方案

七、生产环境最佳实践


在 Spring Cloud Alibaba 项目中集成 Apache SkyWalking 核心是部署 SkyWalking 服务端 + 应用接入 SkyWalking Agent,全程无侵入业务代码,以下是分步实操指南(基于 SkyWalking 9.x 版本,适配 Spring Cloud Alibaba 2022.x/2021.x 主流版本)。

一、环境准备

组件 版本建议 说明
Spring Cloud Alibaba 2021.0.5.0 / 2022.0.0.0 主流稳定版本
SkyWalking 9.7.0(最新稳定版) 包含 Agent/OAP/UI
JDK 8+/11+ 适配 Spring Cloud 版本
存储介质 Elasticsearch 7.17.x 推荐(也支持 MySQL/H2)

二、步骤 1:部署 SkyWalking 服务端(OAP + UI)

SkyWalking 服务端包含 OAP Server(数据处理 / 存储)和 UI(可视化),支持单机 / 集群部署,这里先讲单机快速部署

1. 下载并解压 SkyWalking 安装包

bash

运行

复制代码
# 下载(也可官网手动下载:https://skywalking.apache.org/downloads/)
wget https://archive.apache.org/dist/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz
# 解压
tar -zxvf apache-skywalking-apm-9.7.0.tar.gz
cd apache-skywalking-apm-bin
2. 配置存储介质(核心:推荐 Elasticsearch)

默认使用 H2 内存数据库(仅测试用),生产需改为 Elasticsearch:编辑 config/application.yml,修改存储配置:

yaml

复制代码
storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    namespace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9200} # ES 地址
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
    socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
3. 启动 OAP 和 UI

bash

运行

复制代码
# 启动 OAP Server(后台运行)
nohup bin/oapService.sh > oap.log 2>&1 &

# 启动 UI 服务(后台运行)
nohup bin/webappService.sh > ui.log 2>&1 &
4. 验证服务端启动
  • OAP 默认端口:11800(Agent 上报)、12800(UI 调用)
  • UI 访问地址:http://{服务器IP}:8080(默认账号 / 密码:admin/admin)
  • 若 UI 能正常打开,说明服务端部署成功。

三、步骤 2:Spring Cloud Alibaba 应用接入 SkyWalking Agent

核心是给应用添加 skywalking-agent.jar 启动参数,无需修改代码。

1. 拷贝 SkyWalking Agent 到应用服务器

将解压后的 apache-skywalking-apm-bin/agent 目录拷贝到应用服务器(如 /usr/local/skywalking/agent)。

2. 配置 Agent(可选,也可通过启动参数覆盖)

编辑 agent/config/agent.config,核心配置:

properties

复制代码
# 应用服务名(必填,需唯一,对应微服务名称)
agent.service_name=${SW_AGENT_NAME:order-service}
# OAP Server 地址(必填)
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
# 日志级别(可选)
logging.level=${SW_LOGGING_LEVEL:INFO}
# 采样率(可选,默认100%,高流量场景可调低)
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1} # -1 表示全采样
3. 应用启动时挂载 Agent

Spring Cloud Alibaba 应用通常为 Jar 包部署,启动脚本添加 -javaagent 参数:

bash

运行

复制代码
java -javaagent:/usr/local/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=order-service \ # 微服务名称(如订单服务)
-Dskywalking.collector.backend_service=192.168.1.100:11800 \ # OAP 地址
-Dskywalking.logging.level=INFO \
-jar order-service.jar # 你的应用 Jar 包
4. 多环境 / 容器化部署适配
(1)Spring Boot 多环境配置(无侵入)

无需改代码,仅需在启动脚本中区分环境:

bash

运行

复制代码
# 测试环境
java -javaagent:/usr/local/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=order-service-test \
-Dskywalking.collector.backend_service=test-oap:11800 \
-jar order-service.jar --spring.profiles.active=test
(2)Docker 部署(Dockerfile 示例)

dockerfile

复制代码
FROM openjdk:8-jre-slim
# 拷贝 Agent 到镜像
COPY skywalking-agent /usr/local/skywalking/agent
# 拷贝应用 Jar 包
COPY target/order-service.jar /app.jar
# 启动命令
ENTRYPOINT ["java", \
"-javaagent:/usr/local/skywalking/agent/skywalking-agent.jar", \
"-Dskywalking.agent.service_name=order-service", \
"-Dskywalking.collector.backend_service=oap-server:11800", \
"-jar", "/app.jar"]
(3)K8s 部署(ConfigMap + 启动参数)
  1. 将 Agent 包通过 ConfigMap/Volume 挂载到 Pod;
  2. 在 Deployment 的 command 中添加 Agent 参数:

yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
spec:
  replicas: 1
  template:
    spec:
      volumes:
      - name: skywalking-agent
        configMap:
          name: skywalking-agent-config
      containers:
      - name: order-service
        image: order-service:v1
        command: ["java"]
        args:
        - "-javaagent:/usr/local/skywalking/agent/skywalking-agent.jar"
        - "-Dskywalking.agent.service_name=order-service"
        - "-Dskywalking.collector.backend_service=oap-service:11800"
        - "-jar"
        - "/app.jar"
        volumeMounts:
        - name: skywalking-agent
          mountPath: /usr/local/skywalking/agent

四、步骤 3:验证集成效果

  1. 启动 Spring Cloud Alibaba 微服务(如订单、商品、用户服务);
  2. 访问微服务接口(触发服务间调用);
  3. 打开 SkyWalking UI,验证核心功能:
    • 服务拓扑仪表盘 > 服务拓扑图,能看到微服务间的调用关系;
    • 链路追踪追踪 > 调用链,可筛选服务名,查看具体请求的全链路;
    • 指标监控仪表盘 > 服务仪表盘,查看 QPS、响应时间、错误率等指标;
    • 日志关联:若需日志链路关联,需额外配置(见下文扩展)。

五、关键扩展:日志与链路 TraceID 关联(可选)

SkyWalking 可将日志与 TraceID 绑定,通过 TraceID 一键查日志,需配置日志框架(以 Logback 为例):

1. 引入依赖(无需新增,Spring Cloud Alibaba 通常已包含)

xml

复制代码
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>9.7.0</version> <!-- 与 SkyWalking 版本一致 -->
</dependency>
2. 修改 logback.xml 配置

添加 SkyWalking 日志转换器,输出 TraceID:

xml

复制代码
<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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} - %msg%n</Pattern>
            <!-- %tid 会自动替换为 SkyWalking 的 TraceID -->
        </layout>
    </encoder>
</appender>

重启应用后,日志中会包含 TraceID,在 SkyWalking UI 中通过 TraceID 可直接关联日志。

六、常见问题与解决方案

问题现象 排查方向
UI 无服务数据 1. Agent 配置的 OAP 地址是否正确;2. 11800 端口是否开放;3. 服务名是否配置
链路不完整 1. 微服务间调用是否使用 Spring Cloud 原生组件(OpenFeign/Ribbon);2. Agent 插件是否适配框架版本
性能影响大 1. 调低采样率(如 agent.sample_n_per_3_secs=10,每 3 秒采样 10 个);2. 开启 Agent 异步上报
ES 存储报错 1. ES 版本是否兼容(SkyWalking 9.x 推荐 ES 7.x);2. ES 集群是否正常

七、生产环境最佳实践

  1. OAP 集群部署:多节点部署 OAP Server,通过注册中心(如 Nacos)实现负载均衡;
  2. Agent 缓存优化:开启 Agent 本地缓存,避免 OAP 宕机时数据丢失;
  3. 采样率调优:高流量场景(QPS > 10000)将采样率设为 10%~20%,平衡性能与监控粒度;
  4. 数据清理:配置 ES 索引生命周期(ILM),定期清理过期监控数据;
  5. 告警配置:在 SkyWalking UI 中配置服务响应时间、错误率告警,对接钉钉 / 邮件。

通过以上步骤,即可在 Spring Cloud Alibaba 项目中完整接入 SkyWalking,实现微服务的全链路追踪、指标监控和日志关联,快速定位生产环境的性能问题和故障。

相关推荐
乐之者v9 小时前
使用 SkyWalking,没有 traceId, 如何分析?
skywalking
阿拉斯攀登10 小时前
SkyWalking 与 Zipkin、Prometheus 深度对比分析
prometheus·skywalking·可观测性·zipkin
小毅&Nora3 天前
【后端】【诡秘架构】 ① 序列9:占卜家——分布式链路追踪入门:用 SkyWalking 预知系统命运
分布式·架构·skywalking
boy快快长大4 天前
【Spring Cloud Alibaba】SkyWalking 链路追踪
skywalking
Li_7695324 天前
Spring Cloud — SkyWalking(六)
java·后端·spring·spring cloud·skywalking
Li_7695325 天前
Spring Cloud —— SkyWalking(五)
java·后端·spring·spring cloud·skywalking
技术破壁人5 天前
《SkyWalking 分布式链路追踪实战》—— 快速定位微服务性能瓶颈!
分布式·微服务·skywalking
Li_7695327 天前
Spring Cloud —— SkyWalking(四)
java·spring cloud·skywalking
Li_7695329 天前
Spring Cloud —— SkyWalking(三)
spring·spring cloud·skywalking