目录
[二、步骤 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 + 启动参数)
- 将 Agent 包通过 ConfigMap/Volume 挂载到 Pod;
- 在 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:验证集成效果
- 启动 Spring Cloud Alibaba 微服务(如订单、商品、用户服务);
- 访问微服务接口(触发服务间调用);
- 打开 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 集群是否正常 |
七、生产环境最佳实践
- OAP 集群部署:多节点部署 OAP Server,通过注册中心(如 Nacos)实现负载均衡;
- Agent 缓存优化:开启 Agent 本地缓存,避免 OAP 宕机时数据丢失;
- 采样率调优:高流量场景(QPS > 10000)将采样率设为 10%~20%,平衡性能与监控粒度;
- 数据清理:配置 ES 索引生命周期(ILM),定期清理过期监控数据;
- 告警配置:在 SkyWalking UI 中配置服务响应时间、错误率告警,对接钉钉 / 邮件。
通过以上步骤,即可在 Spring Cloud Alibaba 项目中完整接入 SkyWalking,实现微服务的全链路追踪、指标监控和日志关联,快速定位生产环境的性能问题和故障。