news 2026/7/10 9:03:51

SkyWalking使用:Spring Cloud Alibaba场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SkyWalking使用:Spring Cloud Alibaba场景

目录

一、环境准备

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

1. 下载并解压 SkyWalking 安装包

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

3. 启动 OAP 和 UI

4. 验证服务端启动

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

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

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

3. 应用启动时挂载 Agent

4. 多环境 / 容器化部署适配

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

(2)Docker 部署(Dockerfile 示例)

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

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

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

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

2. 修改 logback.xml 配置

六、常见问题与解决方案

七、生产环境最佳实践


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

一、环境准备

组件版本建议说明
Spring Cloud Alibaba2021.0.5.0 / 2022.0.0.0主流稳定版本
SkyWalking9.7.0(最新稳定版)包含 Agent/OAP/UI
JDK8+/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,实现微服务的全链路追踪、指标监控和日志关联,快速定位生产环境的性能问题和故障。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 19:35:09

简单线程池实现(单例模式)

1.概念 基本概念 线程池是一种多线程处理形式&#xff0c;它预先创建一组线程并管理它们&#xff0c;避免频繁创建和销毁线程带来的性能开销。 在 Linux 环境下&#xff0c;线程池&#xff08;Thread Pool&#xff09;是一种常用的并发编程模型&#xff0c;用于复用线程资源&…

作者头像 李华
网站建设 2026/7/10 6:22:10

类与对象三大核心函数:构造、析构、拷贝构造详解

类与对象三大核心函数&#xff1a;构造、析构、拷贝构造详解 一、引言 在C面向对象编程中&#xff0c;构造函数、析构函数和拷贝构造函数被称为"三大件"&#xff08;Rule of Three&#xff09;。它们是类设计的基石&#xff0c;决定了对象的创建、拷贝和销毁行为。…

作者头像 李华
网站建设 2026/7/9 15:29:39

UiPath在金融行业的5个高价值应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个UiPath自动化流程&#xff0c;模拟银行对账单处理场景。流程应包括&#xff1a;1)自动登录网银系统下载对账单&#xff1b;2)使用OCR技术识别对账单内容&#xff1b;3)与内…

作者头像 李华
网站建设 2026/7/10 7:16:38

docker安装Qwen3-32B容器化方案提升运维效率

Docker安装Qwen3-32B容器化方案提升运维效率 在AI基础设施快速演进的今天&#xff0c;一个典型的技术团队可能正面临这样的困境&#xff1a;开发环境里流畅运行的大模型服务&#xff0c;一旦部署到生产集群就频频崩溃&#xff1b;不同版本的PyTorch、CUDA驱动和Python库相互冲突…

作者头像 李华
网站建设 2026/7/9 17:45:44

999999

999999

作者头像 李华
网站建设 2026/7/10 10:12:32

Windows平台Conda activate报错?Miniconda初始化指南

Windows平台Conda activate报错&#xff1f;Miniconda初始化指南 在人工智能和数据科学项目中&#xff0c;Python 已经成为事实上的标准语言。但随着项目增多&#xff0c;不同任务对 Python 版本、库依赖的要求千差万别——有的需要 PyTorch 1.13&#xff0c;有的必须用 Tensor…

作者头像 李华