分布式监控SkyWalking链路追踪

文章目录


前言

Apache SkyWalking 是一款开源的分布式系统应用性能监控(APM)与可观测性分析平台,专为微服务、云原生和容器化架构设计,核心功能包括分布式追踪、指标监控、服务拓扑分析、日志关联等,采用无侵入式探针(Java Agent),通过字节码增强实现全链路数据采集,无需修改业务代码。

核心功能

  • 1.分布式追踪:记录跨服务调用链路,展示各节点耗时、状态,支持链路筛选、定位慢查询与错误节点。
  • 2.指标监控:采集服务 / 实例的 CPU、内存、响应时间、QPS、错误率等,支持自定义指标与告警。
  • 3.服务拓扑:自动生成服务依赖图,直观呈现调用关系,识别关键依赖与瓶颈。
  • 4.日志关联:通过 TraceID 关联日志,实现 "链路 - 日志 - 指标" 一体化分析,快速定位异常根因。
  • 5.服务网格适配:深度集成 Istio、Envoy,支持数据面 / 控制面遥测分析,适配云原生场景。
  • 6.告警机制:支持阈值告警、异常事件告警,集成邮件、钉钉等通知渠道。

SkyWalking 从8.x 版本(约 2020 年中) 开始,APM 安装包与 Agent 探针包正式分离,需单独下载这两个核心安装包:Apache SkyWalking APM(OAP Server + UI)和对应语言的 Agent(如 Java Agent)。


一、SkyWalking下载

https://skywalking.apache.org/downloads/?spm=5176.28103460.0.0.96a07551ICWNd1

选择合适的APM 安装包,和 Agent 探针包下载。

这里我选择了

二、SkyWalking使用

1.启动SkyWalking OAP Server(后端)


点击bin目录下的startup.bat

会弹出两个窗口和版本不兼容警告。目前不影响继续使用

默认端口号是8080可以在webapp的yml下设置

这里我设置为8081

打开浏览器输入http://localhost:8081即可访问

如果看到 SkyWalking UI 页面,说明 OAP 启动成功!

2.使用 Java Agent 监控你的 Java 应用

探针不能直接启动,需要配置

这里有个快捷键alt+v

在 VM options 中填写

-javaagent:D:你的agent路径\skywalking-agent.jar

-Dskywalking.agent.service_name=manage-gatway(你的服务名称)

-Dskywalking.collector.backend_service=localhost:11800

给每个服务添加好以后就可以启动了

启动时会看到很多日志

启动以后先访问项目

再次查看http://localhost:8081

项目的发起的请求链路会记录在这里


总结

本次实操围绕 Apache SkyWalking 的基础部署与 Java 应用监控展开,核心完成了8.X 及以上版本的双包分离式部署、OAP Server 后端启动、UI 端口自定义配置以及 Java Agent 探针与微服务的集成,实现了对 Java 应用的无侵入式全链路监控,以下是核心总结与关键补充:

一、核心实操成果

完成 SkyWalking 核心组件分离下载:单独获取APM 安装包(OAP Server+UI) 和Java Agent 探针包,符合 8.X 及以上版本的使用规范;

成功启动 OAP Server 后端:通过startup.bat启动服务,解决 UI 端口冲突问题(默认 8080 修改为 8081),正常访问 SkyWalking 可视化界面;

实现 Java Agent 探针集成:通过 IDEA 的 VM options 配置探针路径、自定义服务名、指定后端采集地址,完成对 Java 微服务(如 manage-gatway)的监控埋点;

验证监控效果:启动业务服务并发起请求后,在 SkyWalking UI 中成功采集到请求链路、服务调用数据,达成基础监控目标。

二、关键知识点补充

双包分离核心逻辑:8.X 及以上版本将 APM(后端 + UI)与 Agent 探针分离,目的是解耦组件、支持多语言探针独立迭代、减小安装包体积,不同组件可按需下载配置;

核心端口说明:

UI 默认端口:8080(可在webapp/application.yml中修改);

Agent 与 OAP 通信端口:11800(核心端口,配置时不可写错);

OAP 的 REST API 端口:12800(默认,无需手动配置);

探针配置核心参数:

-javaagent:【本地Agent包的skywalking-agent.jar绝对路径】

-Dskywalking.agent.service_name=【自定义服务名,需唯一,便于UI识别】

-Dskywalking.collector.backend_service=【OAP部署地址:11800,本地为localhost:11800】

每个微服务需单独配置,服务名不可重复,否则会导致链路数据混乱;

启动警告说明:启动 OAP 时出现的版本不兼容警告(如sun.reflect.Reflection.getCallerClass is not supported),是因 JDK 版本与 Agent 版本适配问题导致,不影响基础功能使用,生产环境可通过升级 Agent 版本(8.10.0+)彻底解决,避免性能损耗。

三、使用注意事项

路径规范:配置-javaagent时需使用绝对路径,且路径中尽量无中文、空格,否则会导致探针加载失败;

多服务监控:微服务架构中,每个服务都要单独配置 VM options,且service_name需与微服务名一致,才能在 SkyWalking 中生成完整的服务拓扑与调用链路;

启动顺序:需先启动 SkyWalking OAP Server,再启动配置了探针的业务服务,否则业务服务的监控数据无法上报;

数据采集触发:配置完成后需手动发起业务请求(如访问接口、页面),SkyWalking 才会采集链路数据,无请求时 UI 中无相关数据展示;

Windows 环境适配:本次使用startup.bat为 Windows 专属启动脚本,Linux/Mac 环境需使用startup.sh,核心配置逻辑一致。

四、后续扩展方向

告警配置:在 SkyWalking UI 中配置阈值告警(如 QPS 过高、接口响应时间过长、服务错误率超标),并绑定邮件、钉钉等通知渠道,实现异常及时预警;

日志关联:修改项目日志配置,将 TraceID 嵌入日志中,实现 "链路 - 日志 - 指标" 一体化分析,快速定位接口异常根因;

多环境部署:测试 / 生产环境中,将 SkyWalking OAP 部署在独立服务器,Agent 配置中填写 OAP 的服务器 IP(而非localhost),实现多机器服务的统一监控;

性能优化:生产环境升级 Agent 版本至 8.10.0+,解决 JDK 兼容警告带来的性能损耗;根据业务规模配置存储(如 Elasticsearch),替代默认存储,提升数据存储与查询性能;

全链路监控:为微服务架构中的所有组件(如网关、业务服务、数据库、中间件)配置对应探针,实现从请求入口到数据存储的全链路追踪。

五、核心结论

SkyWalking 作为无侵入式的 APM 工具,通过Agent 探针 + OAP 后端 + UI 可视化的架构,能快速实现对 Java 微服务的链路追踪、指标监控与拓扑分析,本次 8.X 版本的基础部署实操,核心掌握双包下载、OAP 启动、Agent 配置三个关键步骤即可实现基础监控需求。

相关推荐
shandongtianhe2 小时前
分布式光伏气象站:实现对光伏电站所处环境的多参数、实时化、高精度监测
分布式
源代码•宸2 小时前
分布式理论基础——Raft算法
经验分享·分布式·后端·算法·golang·集群·raft
J_liaty2 小时前
XXL-Job 实现分布式定时任务
分布式·xxl-job
小北方城市网13 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
小尘要自信19 小时前
高级网络爬虫实战:动态渲染、反爬对抗与分布式架构
分布式·爬虫·架构
小程故事多_801 天前
深度解析Kafka重平衡,触发机制、执行流程与副本的核心关联
分布式·kafka
2501_948120151 天前
基于HBase的分布式列式存储
数据库·分布式·hbase
小北方城市网1 天前
MyBatis-Plus 生产级深度优化:从性能到安全的全维度方案
开发语言·redis·分布式·python·缓存·性能优化·mybatis
【赫兹威客】浩哥1 天前
【赫兹威客】伪分布式Kafka测试教程
分布式·kafka