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

微服务-springcloud-springboot-Skywalking详解(下载安装)

一、SkyWalking核心介绍

1. 什么是SkyWalking?

Apache SkyWalking是一款国人主导开发的开源APM(应用性能管理)系统,2015年由吴晟创建,2017年进入Apache孵化器,2019年毕业成为Apache顶级项目。它通过分布式追踪、服务网格遥测分析、指标聚合和可视化一体化解决方案,提供分布式系统的观测性能力

核心特点:
  • 多语言自动探针:支持Java、.NET Core、Node.js、PHP、Golang等十余种语言

  • 服务拓扑自动发现:动态绘制服务间调用关系图

  • 细粒度性能分析:支持方法级代码执行追踪

  • 多维度监控:整合Metrics、Logging、Tracing三大观测支柱

  • 云原生友好:完美支持Kubernetes、Service Mesh环境

2. APM系统核心价值

传统监控系统(如Zabbix、Prometheus)与APM系统的对比:

维度传统监控系统APM系统
监控焦点硬件/系统级指标应用内部执行过程
数据粒度服务级别代码方法级别
核心能力异常告警性能瓶颈诊断
典型指标CPU/内存/磁盘使用率调用链追踪、事务响应时间
问题定位深度知道"有问题"知道"为什么有问题"

SkyWalking通过分布式追踪技术,可以还原一个请求在微服务架构中的完整流转路径,精确到每个服务的代码执行耗时,这正是解决"慢请求"问题的关键。

二、技术架构深度解析

1. 整体架构组成

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。
数据流向:

核心组件:
  • Agent:驻留在应用进程内的探针,通过字节码增强技术收集数据

  • OAP Server:可集群部署的观测分析平台,负责数据聚合、计算和存储

  • Storage:支持Elasticsearch、MySQL、TiDB、H2等多种存储后端

  • UI:功能强大的可视化控制台

2. 探针工作原理

以Java探针为例,其通过Java Agent机制实现无侵入式埋点:

// 典型字节码增强示例(简化版)
public class TracingInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {@Overrideprotected ClassMatch enhanceClass() {return byName("org.apache.dubbo.proxy.Invoker");}@Overridepublic ConstructorInterceptPoint[] getConstructorsInterceptPoints() {// 方法拦截点定义}
}

这种技术使得业务代码无需任何修改即可获得监控能力,相比CAT等需要代码埋点的方案具有明显优势。

三、竞品对比分析

主流APM系统功能对比

特性SkyWalkingZipkinPinpointCAT
实现方式字节码增强拦截请求字节码增强代码埋点
代码侵入性
调用链粒度方法级接口级方法级代码级
JVM监控支持不支持支持支持
服务拓扑自动生成自动生成需配置
存储扩展性支持多DB有限HBase专用复杂
告警功能完善基础完善

性能基准测试

根据官方测试报告(单节点OAP,ES存储):

四、核心功能详解

1. 分布式追踪能力

  • 全链路追踪:跨进程、跨线程的请求跟踪

  • 智能采样:动态调整采样率平衡性能与数据完整性

  • 异常标记:自动标识调用链中的错误节点

2. 服务拓扑分析

自动生成的服务依赖图可显示:

  • 服务间调用关系

  • 流量方向与强度

  • 健康状态(颜色标识)

  • 关键指标(成功率、延迟)

3. 性能剖析

-- 示例:查询慢事务Top 5
SELECT service_name, avg_latency 
FROM endpoint_avg 
WHERE start_time > NOW() - 1h 
ORDER BY avg_latency DESC 
LIMIT 5

4. 告警体系

支持基于OLAP引擎的多维度告警规则:

  • 服务响应时间阈值

  • 错误率突增检测

  • 服务心跳丢失

  • JVM内存溢出预警

告警渠道覆盖:

  • 邮件

  • Webhook(支持钉钉、企业微信)

  • Slack

  • PagerDuty

五、典型应用场景

1. 微服务性能诊断

  • 定位跨服务调用的性能瓶颈

  • 分析分布式事务超时原因

  • 识别不合理的服务依赖

2. 云原生环境监控

  • Kubernetes Pod间通信分析

  • Service Mesh(Istio/Linkerd)可观测性

  • 容器资源使用关联分析

3. 生产环境运维

  • 灰度发布效果验证

  • 突发流量影响评估

  • 容量规划数据支持

六、SkyWalking环境搭建

1.SkyWalking下载

下载地址:Downloads | Apache SkyWalking

Skywalking主要是下载两个包:SkyWalking APM和Java Agent,Skywalking APM提供后端服务和UI服务,Java Agent集成进应用进行数据收集传输。

SkyWalking APM

Java Agent

2.SkyWalking部署(Windows)

SkyWalking APM说明

SkyWalking APM解压后得到apache-skywalking-apm-bin文件,重点关注以下3个目录:

  • bin目录下是启动脚本,一般用startup命令启动

  • config目录下是配置文件,主要需要关注的是application.yml文件,里面有存储策略、服务端口及查询策略的配置信息。
Java Agent说明

Java Agent解压后得到skywalking-agent文件:

  • skywalking-agent.jar:探针包,使用了java agent技术,可以拦截java应用的执行。
  • plugins目录:这个目录下主要放日志采集的插件,并且支持自定义插件。skywalking官方已经开发了大部分框架的插件,例如springmvc、dubbo等等。这个设计给skywalking赋予了极强的扩展性。
  • optional-plugins:备用插件库,这里的插件在执行时不会被加载,只有放在plugins目录下的插件才会被加载。这个目录相当于仓库,需要启用什么功能的日志采集,就把对应的插件拷贝到plugins目录。同理,如果想要不采集某种日志,就把对应的插件从plugins目录中删掉即可。
  • config目录:这里是探针和插件的配置。比如说配置应用名称(会体现在UI中)。

http://www.xdnf.cn/news/1178137.html

相关文章:

  • 设置后轻松将 iPhone 转移到 iPhone
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • Socket编程入门:从IP到端口全解析
  • C语言(长期更新)第5讲:数组练习(三)
  • Apache 消息队列分布式架构与原理
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • LLM层归一化:γβ与均值方差的协同奥秘
  • 力扣面试150题--在排序数组中查找元素的第一个和最后一个位置
  • 5.7 input子系统
  • 「Linux命令基础」查看用户和用户组状态
  • Silly Tavern 教程②:首次启动与基础设置
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • Apache Flink 实时流处理性能优化实践指南
  • TRUMPF TruConvert DC 1008 – 1010 TruConvert System Control 逆变器
  • 货车手机远程启动的扩展功能有哪些
  • 从零用java实现 小红书 springboot vue uniapp(15) 集成minio存储 支持本地和minio切换
  • 如何在 Ubuntu 24.04 服务器或桌面版上安装和使用 gedit
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWModeManager
  • 「iOS」——RunLoop学习
  • JS事件基础
  • 锁定锁存器 | 原理 / 应用 / 时序
  • C++中std::list的使用详解和综合实战代码示例
  • 深入掌握CSS Grid布局:每个属性详解与实战示例
  • MIT线性代数01_方程组的几何解释
  • MIT线性代数02_矩阵消元
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 【C语言进阶】柔性数组
  • 【自动化测试】JMeter+Jenkins自动化接口与性能测试环境部署指南
  • Jenkins最新版本的安装以及集成Allure生成测试报告
  • 【并集查找】P4380 [USACO18OPEN] Multiplayer Moo S|省选-