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,实现微服务的全链路追踪、指标监控和日志关联,快速定位生产环境的性能问题和故障。

相关推荐
烛之武2 天前
Skywalking服务链路追踪与Jemeter压力测试
压力测试·skywalking
鬼先生_sir3 天前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
dgvri8 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
rOuN STAT9 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
危笑ioi9 天前
helm部署skywalking链路追踪 java
java·开发语言·skywalking
MmeD UCIZ10 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
专注API从业者10 天前
淘宝 API 调用链路追踪实战:基于 SkyWalking/Pinpoint 的全链路监控搭建
大数据·开发语言·数据库·skywalking
MMMMMMMMMMemory11 天前
记录skywalking预警如何处理401问题
skywalking
SoulRoar.11 天前
Armbian离线安装ES+SkyWalking并注册系统服务
大数据·elasticsearch·skywalking
@土豆12 天前
Java JVM参数环境变量详解及SkyWalking Agent集成技术文档
java·jvm·skywalking