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

从入门到实践:玩转分布式链路追踪利器SkyWalking

1.概述

在当今微服务架构盛行的时代,一个看似简单的前端请求,背后往往涉及数十个甚至上百个服务的协同调用。当系统出现性能问题或异常时,仅靠传统日志监控往往如同“大海捞针”,难以迅速定位问题根源。

正是在这样的背景下,SkyWalking—— 一款优秀的国产开源分布式链路追踪与性能监控系统应运而生。该项目最初由吴晟(华为开发者)个人开源,于2017年进入Apache孵化器,并最终成为Apache顶级项目。截至目前,SkyWalking在GitHub上已收获超过25k的Star,足以证明其强大的影响力和广泛的应用前景

1.1 SkyWalking 是什么?

SkyWalking 是一个开源的可观测性平台,用于从服务、云原生基础设施中收集、分析、聚合和可视化数据。它提供了清晰的分布式系统观测能力,并支持跨云、跨集群的统一监控。作为现代化的应用性能监控(APM)系统,SkyWalking 尤其适合云原生和基于容器的微服务架构。

核心优势:
  • 无侵入探针:通过Java Agent字节码增强实现监控,无需修改业务代码
  • 高性能通信:采用gRPC进行数据传输,效率高、延迟低
  • 功能全面:支持链路追踪、JVM监控、服务依赖分析、告警等
  • 生态友好:完美支持Spring Cloud、Spring Boot等主流微服务框架
典型应用场景:
  1. 性能瓶颈诊断:快速定位慢查询、高延迟接口
  2. 全链路追踪:可视化展示请求在微服务间的完整调用路径
  3. 服务依赖分析:自动绘制服务拓扑,识别关键依赖与瓶颈点
  4. 异常根因定位:结合链路、指标与日志,迅速定位故障源头
  5. 容量规划参考:基于历史性能数据进行资源预测与扩容决策

1.2 主流链路追踪框架对比

随着微服务架构的普及,分布式链路追踪技术也日趋成熟,目前主流的开源方案包括:

  • Spring Cloud Sleuth + Zipkin:需代码埋点,侵入性强
  • 大众点评 Cat:同样需要侵入式埋点,接入成本较高
  • Pinpoint:韩国团队开发,同样基于字节码增强,无侵入
  • SkyWalking:国产开源,无侵入、性能好、社区活跃

SkyWalking 与 Pinpoint 均通过字节码注入实现监控,对业务代码零侵入,是目前企业级APM系统的优选方案。对于国内开发者而言,SkyWalking 具有中文文档丰富、社区响应快、与国内技术栈整合度高等优势,更值得推荐。

2.SkyWalking 架构与原理

SkyWalking 核心架构组件逻辑上分为四部分: 探针(Agent)、 平台后端(OAP),存储(Storage)和用户界面(UI)

  • 探针(Agent):收集监控数据, 将数据格式化为 SkyWalking 适用的格式,然后传递给中间的OAP服务器。

  • OAP:全称即图上的Observabilitiy Analysis Platform, 完成数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程

  • 存储通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。

  • UI一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

SkyWalking 利用Java Agent技术,在类加载阶段动态注入监控逻辑,无需改动源码:

// Skywalking通过javaagent在类加载时动态注入监控代码// 不需要修改业务代码publicclassSkywalkingAgent{publicstaticvoidpremain(Stringargs,Instrumentationinst){// 1. 注册类文件转换器inst.addTransformer(newClassFileTransformer(){publicbyte[]transform(...){// 2. 使用ByteBuddy/Javassist修改字节码// 3. 在方法入口/出口插入监控逻辑}});}}

这种方式既保证了监控的全面性,又实现了对业务的完全透明。关于javaagent知识点请另外自行查阅资料。

3.SkyWalking 安装与部署

基于上面对Skywalking架构原理的介绍,相信大家已经对它已经有了一定的认识了解,接下来我们就来开始搭建一个强大的监控系统。

3.1 下载安装包

去官网:https://skywalking.incubator.apache.org/downloads/ 下载,我这里选择版本是:v9.7.0

3.2 解压与调整配置

tar-zxvf apache-skywalking-apm-9.7.0.tar.gz

解压之后有一个文件夹,文件信息如下:

  • bin:存放一些可执行的脚本,比如说启动Skywalking OAP服务的脚本

  • **config:**存放配置文件,这里是我们需要关注的,有OAP服务的配置文件applicaiton.yml。配置项太多了所以这里我随便列举两项看看

    cluster:# 默认单例部署,也可以集群部署,比如说通过注册中心nacosselector:${SW_CLUSTER:standalone}storage:# 数据存储默认是内存数据库h2,生产环境一般推荐elasticsearch,官方也强烈建议selector:${SW_STORAGE:h2}

    由于我是本地搭建演示,就完全按照默认的即可,没有做任何修改

  • **webapp:**UI服务,默认端口是8080,但一般这个端口被占用了,所以需要修改一下webapp/application.yml,我这里改成:8181

serverPort:${SW_SERVER_PORT:-8181}# Comma seperated list of OAP addresses.oapServices:${SW_OAP_ADDRESS:-http://localhost:12800}zipkinServices:${SW_ZIPKIN_ADDRESS:-http://localhost:9412}

3.3 启动服务

# 启动OAP后端bin/oapService.sh# 启动UI前端bin/webappService.sh

启动后访问http://localhost:8181即可进入SkyWalking监控控制台。

4.Spring Boot接入指南

在启动命令中添加Java Agent参数

-javaagent:/Users/shepherdmy/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=shepherd-demo01-service -Dskywalking.collector.backend_service=localhost:11800

项目启动成功之后,Skywalking会监控到一个名为shepherd-demo01-service的服务,如上图所示。可看到对应的服务名称、实例、接口调用链路等信息

  • 服务概览:展示服务负载量、接口请求平均响应时间、成功率等关键指标

点击服务名进入监控指标概览页:

  • 实例详情:查看实例下的监控指标信息,如JVM内存、CPU、GC等情况

点击Instance,可以查到该服务的实例列表

点击实例名进入,可以查看这个实例下的监控信息:

查看实例的jvm信息:

  • 查看EndPoint端点信息

端点可以简单理解为是被监控服务所接收的请求。

点击GET:/user/page端点进去,可以查看这个请求的监控信息:

该请求GET:/user/page逻辑是先查询Redis,有缓存数据就直接返回,没有再根据参数去数据库MySQL查询数据存入Redis之后返回,这里详细展示了请求的整个调用链路,非常清晰直观。

  • 拓扑图:可视化服务间依赖关系

5.总结

SkyWalking 提供多层级的监控指标,助力全方位系统可观测:

层级监控指标示例
服务级别P99/P95延迟、请求量、错误率
实例级别CPU使用率、JVM堆内存、线程数、GC次数
接口端点慢接口TOP10、错误接口TOP5、调用链详情
数据库慢SQL查询、连接池状态、执行时间分布

SkyWalking 作为一款开源APM系统,凭借其无侵入的设计卓越的性能表现以及活跃的中文社区,已成为众多企业微服务监控的首选方案。无论是开发调试、性能优化,还是线上故障排查,SkyWalking 都能提供强大的数据支持和可视化能力。

合理部署与使用SkyWalking,不仅能提升系统稳定性,还能显著降低运维复杂度,是现代分布式系统可观测性建设中不可或缺的一环。


本文初步介绍了SkyWalking的核心概念、部署流程与接入实践,关于微服务链路追踪的更深层原理、Trace与Span的组成、以及与Log4j2/Logback等日志框架的整合,我们将在后续文章中继续探讨。欢迎关注交流,共同进步

http://www.jsqmd.com/news/130103/

相关文章:

  • 在深圳学无人机?2025深圳无人机培训机构推荐清单收好 - 栗子测评
  • leetcode 2054(排序 + 单调栈,通用做法是 DP)
  • “星河璀璨,艺术远航”首届中华书画瓷器艺术太空邀请展在京发布
  • 2025国内幕墙铝单板厂家有哪些:氟碳喷涂铝单板厂家大盘点 - 栗子测评
  • pycharm如何设置uvicorn debug
  • 2025国内幕墙铝单板厂家有哪些:氟碳喷涂铝单板厂家大盘点 - 栗子测评
  • 从代码补全到项目交付:MonkeyCode如何重塑你的全流程开发体验
  • 智能体在车联网中的应用:第14天 卷积神经网络(CNN)专精:从卷积原理到LeNet-5实战车辆图像分类
  • 冷冻研磨机哪个品牌好,国产新起之秀飞驰(北京)/净信突出重围 - 品牌推荐大师1
  • GEO优化的价值锚点:DeepSeek及多平台优化服务商甄选指南 - 品牌推荐排行榜
  • 4G工业网关实现PLC数据采集与HTTP协议上报
  • 达尔文12号在哪买:效率提80%!一键直达抢购口揭秘 - 品牌测评家
  • 精准破局GEO优化:企业选型的全维度价值指南 - 品牌推荐排行榜
  • 软文发布平台哪家好?5大主流软文发布平台综合评测+选择指南 - 资讯焦点
  • rust使用protobuf
  • 数字生命工程的突破-震惊吧,世界!
  • 蒸汽轮机在线监测:燃气电厂高效运转的“二当家”与隐形守护者
  • 当你的论文卡在“写不出来”和“改不下去”之间:一个科研人对AI写作工具的冷静观察与非推销式体验报告
  • 2025服装拉链袋/复合包装袋定制厂家权威榜单 - 栗子测评
  • 大龄Java开发失业五个月,想转行
  • 破局AI搜索流量困局:Deepseek优化核心服务商深度解析 - 品牌推荐排行榜
  • 青云卫找谁买:复购率90%!老客私藏选购路径曝光 - 品牌测评家
  • 2025年大模型学习终极指南:四阶段路线图,带你从零基础到实战专家,大模型从入门到精通!
  • 优质石英粉厂家推荐排行榜——聚焦高纯度与定制化需求 - 资讯焦点
  • 深耕精准触达:GEO优化服务商的专业力甄选指南 - 品牌推荐排行榜
  • 科研新利器:书匠策AI如何重塑期刊论文写作的智能范式
  • JimuBI 积木大屏 v2.3.0 版本发布,免费的可视化大屏和仪表盘
  • 深耕流量入口:DeepSeek优化服务商的甄选逻辑与价值锚点 - 品牌推荐排行榜
  • 特征值类重大升级
  • 2025数控加工中心机床厂家实力榜单 - 栗子测评