SkyWalking最新实操入门博客:微服务可观测性搭建+原理详解+从零部署+UI使用教程

文章目录

前言:微服务越做越大,系统必须要有「可观测性」

随着互联网业务持续迭代升级,后端微服务数量越来越多,服务之间互相调用关系错综复杂,网关、业务服务、数据库、第三方接口链路层层嵌套。

一旦线上出现接口卡顿、偶发报错、调用失败、响应超时等问题,只靠传统日志排查,效率极低:日志分散在多台服务器、看不清服务调用关系、找不到性能瓶颈卡点,运维和开发排查故障全靠猜。

想要快速摸清系统整体运行状态、精准定位报错根源、监控接口性能指标,就必须搭建一套分布式链路追踪 + 应用性能监控的可观测性平台。

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、部署服务端、挂载探针三步,上手简单、运维高效,既能做链路追踪排查故障,又能做性能监控运维告警,是微服务生产环境必备标配工具,学会即可快速搞定线上运维排查难题。

相关推荐
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_16:(音频与视频处理——从画布滤镜到3D沉浸音频的进阶指南)
前端·javascript·ui·3d·html·音视频
超梦dasgg15 小时前
智慧充电系统设备管理服务对外接口实现方案
java·spring·微服务
gQ85v10Db16 小时前
Redis分布式锁进阶第十七篇:微服务分布式锁全局治理 + 跨团队统一规范落地 + 全链路稳定性提升方案
redis·分布式·微服务
ZC跨境爬虫17 小时前
跟着 MDN 学 HTML day_15:(媒体缓冲、拖动与时间范围控制)
前端·笔记·ui·html·edge浏览器·媒体
ZC跨境爬虫1 天前
Python Django开发者转向微信小程序:从架构理解到第一行代码的完整准备指南
开发语言·python·ui·微信小程序·django
ZC跨境爬虫1 天前
跟着 MDN 学 HTML day_13:多媒体嵌入 —— 视频与音频
前端·css·笔记·ui·html·音视频
RuoyiOffice1 天前
SpringBoot+Vue3 实现 OA 公文外来文与归档台账:外部收文、BPM办理、三类公文统一归档
spring boot·微服务·uni-app·vue·ruoyi·anti-design-vue·ruoyioffice
IT邦德1 天前
26ai OGG 微服务高可用部署及切换
微服务·云原生·架构
KK溜了溜了2 天前
Skywalking
skywalking