当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/70722.html

相关文章:

  • Ollama下载GPT-OSS-20B并实现本地化AI服务的完整教程
  • SkyWalking 与 Zipkin、Prometheus 深度对比分析
  • 全面升级!yudao-cloud v2.4.2重磅发布:AI大模型与工作流引擎双引擎驱动业务创新
  • gpt-oss-20b结合Dify部署实现可视化AI工作流
  • AI自动修复CHLSProxy SSL证书错误:开发者新利器
  • 77777
  • 大麦抢票终极指南:DamaiHelper全自动解决方案
  • 大学计算机
  • 一口气解释清楚转换流存在的原因
  • 从卧床不起到健步如飞 退休老阿姨用机器人治腰突的亲身体验!
  • Java毕设项目:基于springboot新能源汽车销售管理系统基于Java Web的新能源汽车信息咨询服务(源码+文档,讲解、调试运行,定制等)
  • Java毕设项目:基于springboot高校体育运动会比赛系统(源码+文档,讲解、调试运行,定制等)
  • uos server 1070e在线软件仓库源整理记录
  • 谷歌镜像站同步更新:Qwen-Image全球加速访问
  • 使用Docker Compose快速部署FLUX.1-dev镜像的5个步骤
  • 腾讯混元HunyuanVideo-Foley模型上线GitHub,开启音画同步新纪元
  • npm publish发布基于Qwen-Image的封装库到公共仓库
  • 冥想第一千七百三十二天(1732)
  • 冥想第一千七百三十三天(1733)
  • Qwen3-8B vs 其他8B模型:开源大模型性能对比实测
  • java计算机毕业设计生活用品供应管理系统的设计与实现 基于SpringBoot的社区日用品采购平台的设计与实现 面向校园的日用杂货线上供应系统的设计与实现
  • 干货!大数据数据增强的实际应用技巧
  • 大数据领域中Power BI与其他工具的对比分析
  • ensp下载官网被屏蔽?国内镜像站提供备份资源
  • 付费墙绕过技术深度解析:Bypass Paywalls Clean实现原理与应用指南
  • 小米运动步数自动同步工具:2025年免费刷步数完整教程
  • Ubuntu安装GNOME桌面增强PyTorch开发体验
  • gpt-oss-20b能否用于文本摘要任务?实测效果报告
  • 3步搞定!网易云NCM音乐格式转换全攻略
  • Flutter 跨端开发进阶:可复用自定义组件封装与多端适配实战(移动端 + Web + 桌面端)