文章目录
- 前言:微服务越做越大,系统必须要有「可观测性」
- 一、SkyWalking核心架构原理(四大分层,零基础秒懂)
-
- [1.1 探针采集层(核心关键,无代码侵入根本)](#1.1 探针采集层(核心关键,无代码侵入根本))
- [1.2 数据传输和逻辑处理层](#1.2 数据传输和逻辑处理层)
- [1.3 数据存储层(生产必选ES,拒绝默认H2)](#1.3 数据存储层(生产必选ES,拒绝默认H2))
- [1.4 数据展示层(Rocketbot可视化UI)](#1.4 数据展示层(Rocketbot可视化UI))
- 二、从零实操搭建SkyWalking生产环境(全套版本统一:8.9.0+ES7.17.1)
-
- [2.1 第一步:搭建Elasticsearch7.17.1存储组件](#2.1 第一步:搭建Elasticsearch7.17.1存储组件)
- [2.2 第二步:搭建SkyWalking8.9.0服务端(OAP+UI)](#2.2 第二步:搭建SkyWalking8.9.0服务端(OAP+UI))
- [2.3 第三步:微服务挂载Agent探针,采集上报数据](#2.3 第三步:微服务挂载Agent探针,采集上报数据)
- 三、SkyWalking核心UI页面实操使用教程
-
- [3.1 仪表盘(核心看指标,运维日常必看)](#3.1 仪表盘(核心看指标,运维日常必看))
-
- [3.2 拓扑图(看清服务调用关系)](#3.2 拓扑图(看清服务调用关系))
- [3.3 追踪(故障排查核心,查报错查慢接口专用)](#3.3 追踪(故障排查核心,查报错查慢接口专用))
- 四、总结
前言:微服务越做越大,系统必须要有「可观测性」
随着互联网业务持续迭代升级,后端微服务数量越来越多,服务之间互相调用关系错综复杂,网关、业务服务、数据库、第三方接口链路层层嵌套。
一旦线上出现接口卡顿、偶发报错、调用失败、响应超时等问题,只靠传统日志排查,效率极低:日志分散在多台服务器、看不清服务调用关系、找不到性能瓶颈卡点,运维和开发排查故障全靠猜。
想要快速摸清系统整体运行状态、精准定位报错根源、监控接口性能指标,就必须搭建一套分布式链路追踪 + 应用性能监控的可观测性平台。
而 Apache SkyWalking 就是目前企业生产首选方案:它不只是简单的链路追踪工具,还兼具服务性能监控、JVM指标采集、运维告警等核心能力,无代码侵入、部署简单、上手极快,真正做到故障排查快、问题定位准、运维管理狠,适配所有SpringCloud微服务项目。
一、SkyWalking核心架构原理(四大分层,零基础秒懂)
SkyWalking整体架构设计清晰,全程分为四大核心层级 ,各司其职、互不干扰,从数据采集、传输处理、存储持久化到页面展示全流程闭环,不用改业务代码,纯外挂式监控。

1.1 探针采集层(核心关键,无代码侵入根本)

很多新手疑惑:SkyWalking不用改代码,怎么自动拦截接口、采集链路数据?核心答案就是探针Agent动态字节码增强技术。
SkyWalking探针并非我们Java开发常用的普通动态代理,而是基于 JavaAgent + ByteBuddy 字节码技术,在项目类加载阶段,直接动态生成增强后的Class字节码文件,无需修改源码、无需加依赖、无需改配置类。
核心工作逻辑:
项目启动加载Class类 → 探针拦截类加载过程 → 动态增强类字节码 → 植入链路拦截、数据采集、异常捕获逻辑 → 项目正常启动运行。
性能与资源影响说明:
- 仅在项目启动阶段一次性做字节码转换,项目运行阶段几乎无额外性能损耗;
- 会轻微增加项目启动时间、少量内存和线程占用,官方实测业务性能损耗仅 5%~10%,生产环境完全可接受;
- 探针内置各类插件,自动增强HTTP接口、数据库操作、RPC调用、MQ调用等逻辑,运行时自动拦截请求链路,同步采集调用耗时、请求参数、异常信息;
- 附带定时任务,自动采集服务器JVM内存、GC次数、CPU使用率等基础运维指标。
1.2 数据传输和逻辑处理层
探针采集到所有链路数据、性能指标、JVM数据后,不会直接写入存储,而是通过 gRPC高性能传输框架,将数据实时异步上报到SkyWalking服务端(OAP服务)。
SkyWalking服务端接收上报数据后,通过内置各类专属插件做数据清洗、分析、聚合计算:
- JVM插件:统计内存占用、GC频率、线程状态;
- 数据库插件:分析SQL执行耗时、慢查询统计;
- 链路分析插件:梳理服务调用关系、计算接口响应时间、统计错误率和QPS;
- 最终处理完成的标准化数据,统一推送至数据存储层持久化保存。
1.3 数据存储层(生产必选ES,拒绝默认H2)
SkyWalking支持多种主流存储介质,可直接在服务端配置文件中切换适配,不同存储适配不同业务量级:
- 默认H2内存数据库:仅本地测试演示使用,重启数据全部丢失,严禁上生产;
- MySQL/TiDB:适合数据量小、链路查询频次低的简单场景,海量链路数据检索慢、扛不住高并发写入;
- Elasticsearch(ES):生产环境唯一推荐,存储容量大、倒排索引检索快、支持高吞吐写入,适配微服务海量链路时序数据存储,还能和EKL日志体系完美联动。
1.4 数据展示层(Rocketbot可视化UI)
SkyWalking自带可视化UI界面,底层基于 Rocketbot 搭建,页面直观易懂、中文适配友好。所有监控指标、链路详情、服务拓扑、报错统计全部可视化展示,无需敲任何命令,点点鼠标就能排查故障、查看系统运行状态。
二、从零实操搭建SkyWalking生产环境(全套版本统一:8.9.0+ES7.17.1)
SkyWalking完整搭建只需三大核心步骤:搭建ES存储 → 部署SkyWalking服务端 → 微服务挂载Agent探针上报数据,全程复制配置即可,无复杂操作。
2.1 第一步:搭建Elasticsearch7.17.1存储组件
1、环境前置准备
ES运行依赖JDK环境,提前安装Java1.8环境:
Plain
yum install java-1.8.0-openjdk-devel.x86_64 -y
2、下载指定稳定版ES
推荐生产统一使用 7.17.1稳定版,兼容性最好:
下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-1
3、核心配置修改(elasticsearch.yml)
解压安装后,修改config目录下elasticsearch.yml核心配置,修改集群名称、节点信息、网络端口、初始主节点等关键参数,适配本地服务器环境。
4、启动ES并验证安装成功
进入ES bin目录,执行启动命令,后台运行服务。浏览器访问 http://ES服务器IP:9200,返回以下JSON格式内容,即为部署成功:
Plain
{
"name": "node-1",
"cluster_name": "my-application",
"cluster_uuid": "GvK7v9HhS4qgCvfvU6lYCQ",
"version": {
"number": "7.17.1",
"build_flavor": "default",
"build_type": "rpm",
"build_hash": "e5acb99f822233d6ad4sdf44ce45a454xxxaasdfas323ab",
"build_date": "2023-02-23T22:20:54.153567231Z",
"build_snapshot": false,
"lucene_version": "8.11.1",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
2.2 第二步:搭建SkyWalking8.9.0服务端(OAP+UI)
1、下载SkyWalking服务端安装包
统一使用8.9.0版本,和后续Agent探针版本保持一致,避免兼容性报错:
下载地址:apache-skywalking-apm-8.9.0.tar.gz
2、修改核心配置切换ES存储
解压安装包后,打开配置文件 config/application.yml,将默认存储改为elasticsearch,填写自己的ES服务器IP端口:
Plain
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
clusterNodes: 你的ES服务器IP:9200
indexShardsNumber: 2
indexReplicasNumber: 0
recordDataTTL: 7
metricsDataTTL: 7
3、启动SkyWalking服务端
进入bin目录,执行启动脚本:
Plain
./startup.sh
启动后通过jps命令可看到两个进程:OAP数据处理进程、UI页面进程。浏览器访问 http://服务器IP:8080,打开SkyWalking可视化首页即为部署成功。

2.3 第三步:微服务挂载Agent探针,采集上报数据
核心重点:不用改业务代码,只需挂载探针启动参数即可完成接入。
1、下载对应版本Agent探针
探针版本必须和服务端一致,统一8.9.0:
下载地址:skywalking-agent.jar
2、SpringBoot项目Jar包启动接入方式(最常用)
启动项目时添加javaagent探针参数,指定探针路径、服务名称、SkyWalking服务端地址(端口固定11800):
Plain
java -javaagent:/你的agent存放路径/skywalking-agent.jar \
-Dskywalking.agent.service_name=自定义微服务名称 \
-Dskywalking.collector.backend_service=SkyWalking服务端IP:11800 \
-jar 你的业务项目.jar
3、Docker部署项目接入方式
将skywalking-agent.jar打入Docker镜像,镜像启动脚本中增加上述同样javaagent启动参数即可。
4、接入验证
启动所有微服务,调用几次业务接口,稍等片刻刷新SkyWalking UI页面,即可自动加载服务监控数据、链路追踪记录,接入完成。
三、SkyWalking核心UI页面实操使用教程
SkyWalking UI核心功能聚焦四大板块,日常运维排查只用重点看这几个模块,新手快速上手无压力,详细图文使用可参考:https://juejin.cn/post/7106307197763584030
3.1 仪表盘(核心看指标,运维日常必看)
核心分为两大统计维度,全方位监控系统运行状态:
- APM监控:支持全局整体、单个服务、服务实例、接口端点四个层级,展示Apdex应用性能指数、平均响应时间、接口成功率、每分钟调用量CPM、响应时间百分位(P50/P95/P99)等核心指标;
- Database数据库监控 :统计数据库访问耗时、慢SQL数量、数据库调用成功率,快速定位数据库性能瓶颈。


核心概念通俗区分:
- 服务(Service):单个微服务应用;
- 服务实例(Instance):微服务集群中的单台服务器节点;
- 端点(Endpoint):具体HTTP接口、RPC方法等业务请求入口。



3.2 拓扑图(看清服务调用关系)

自动生成微服务真实运行调用拓扑图,直观展示网关、业务服务、数据库、第三方接口之间的依赖调用关系,接手新项目无需手绘架构图,一眼摸清整体架构。
3.3 追踪(故障排查核心,查报错查慢接口专用)

所有请求全链路追踪记录,按时间、报错状态、TraceID筛选查询,点开任意请求即可看到完整调用链路、每一步服务耗时、具体报错堆栈信息,几分钟定位故障根因,告别挨个查日志的低效操作。
四、总结
SkyWalking凭借四层极简架构、无代码侵入探针技术、ES高性能存储加持,快速为微服务搭建完整可观测性体系。部署只需搭建ES、部署服务端、挂载探针三步,上手简单、运维高效,既能做链路追踪排查故障,又能做性能监控运维告警,是微服务生产环境必备标配工具,学会即可快速搞定线上运维排查难题。