微服务-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.pswp.cn/web/90876.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 字段值过长导致索引报错问题排查与解决经验总结

在最近使用 Elasticsearch 的过程中,我遇到了一个 字段值过长导致索引失败 的问题。经过排查和多次尝试,最终通过设置字段 "index": false 方式解决。本文将从问题现象、排查过程、问题分析、解决方案和建议等方面,详细记录这次踩坑…

使用idea 将一个git分支的部分记录合并到git另一个分支

场景: 有多个版本分支,需要将其中一个分支的某一两次提交合并到指定分支上 eg: 将v1.0.0分支中指定提交记录 合并到 v1.0.1分支中 操作: 步骤一 idea切换项目分支到v1.0.1(需要合并到哪个分支就先站到哪个分支上) 步骤二 在ide…

基于深度学习的图像分类:使用ShuffleNet实现高效分类

前言 图像分类是计算机视觉领域中的一个基础任务,其目标是将输入的图像分配到预定义的类别中。近年来,深度学习技术,尤其是卷积神经网络(CNN),在图像分类任务中取得了显著的进展。ShuffleNet是一种轻量级的…

OpenGL里相机的运动控制

相机的核心构造一个是glm::lookAt函数,一个是glm::perspective函数,本文相机的一切运动都在于如何构建相应的参数传入上述两个函数里。glm::mat4 glm::lookAt(glm::vec3 const &eye,//相机所在位置glm::vec3 const &center,//要凝视的点glm::vec…

java设计模式 -【策略模式】

策略模式定义 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。它将算法封装成独立的类,使得它们可以相互替换,而不影响客户端代码。 核心组成 Context(上下文)&…

项目重新发布更新缓存问题,Nginx清除缓存更新网页

server {listen 80;server_name your.domain.com; # 替换为你的域名root /usr/share/nginx/html; # 替换为你的项目根目录# 规则1:HTML 文件 - 永不缓存# 这是最关键的一步,确保浏览器总是获取最新的入口文件。location /index.html {add_header Cache-…

系统架构师:系统安全与分析-思维导图

系统安全与分析的定义​​系统安全与分析是系统架构师在系统全生命周期中贯穿的核心职责,其本质是通过​​识别、评估、防控安全风险,并基于数据与威胁情报进行动态分析​​,构建从技术到管理的多层次防护体系,确保系统的保密性&a…

利用 Google Guava 的令牌桶限流实现数据处理限流控制

目录 一、令牌桶限流机制原理 二、场景设计与目标 三、核心实现代码(Java) 1. 完整代码实现 四、运行效果分析 五、应用建议 在高吞吐数据处理场景中,如何限制数据处理速率、保护系统资源、防止下游服务过载是系统设计中重要的环节。本文…

小黑课堂计算机二级 WPS Office题库安装包2.52_Win中文_计算机二级考试_安装教程

软件下载 【名称】:小黑课堂计算机二级 WPS Office题库安装包2.52 【大小】:584M 【语言】:简体中文 【安装环境】:Win10/Win11(其他系统不清楚) 【迅雷网盘下载链接】(务必手机注册&#…

CSS3知识补充

1.伪类和伪元素: 简单的伪类实例 :first-chlid :last-child :only-child :invalid 用户行为伪类 :hover——上面提到过,只会在用户将指针挪到元素上的时候才会激活,一般就是链接元素。:focus——只会在用户使用键盘控制,选…

Spring Retry 异常重试机制:从入门到生产实践

Spring Retry 异常重试机制&#xff1a;从入门到生产实践 适用版本&#xff1a;Spring Boot 3.x spring-retry 2.x 本文覆盖 注解声明式、RetryTemplate 编程式、监听器、最佳实践 与 避坑清单&#xff0c;可直接落地生产。 一、核心坐标 <!-- Spring Boot Starter 已经帮…

VTK交互——CallData

0. 概要 这段代码https://examples.vtk.org/site/Cxx/Interaction/CallData/是一个使用VTK(Visualization Toolkit)库的示例程序,主要演示了自定义事件、回调函数和定时器的使用。程序创建一个旋转球体场景,并通过定时器触发自定义事件来更新计数器。以下是详细解释: 1.…

OCR工具集下载与保姆级安装教程!!

软件下载 软件名称&#xff1a;OCR工具集1.1 软件语言&#xff1a;简体中文 软件大小&#xff1a;78.8M 系统要求&#xff1a;Windows7或更高&#xff0c; 32/64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 盘丨下载&#xff1a;https://tool.nineya…

平时遇到的错误码及场景?404?400?502?都是什么场景下什么含义,该怎么做 ?

✅ 一、常见 HTTP 错误码及含义状态码含义简述类型400Bad Request&#xff1a;请求格式有误客户端错误401Unauthorized&#xff1a;未授权客户端错误403Forbidden&#xff1a;禁止访问客户端错误404Not Found&#xff1a;资源不存在客户端错误405Method Not Allowed&#xff1a…

基于Tornado的WebSocket实时聊天系统:从零到一构建与解析

引言 在当今互联网应用中&#xff0c;实时通信已成为不可或缺的一部分。无论是社交媒体、在线游戏还是协同办公&#xff0c;用户都期待即时、流畅的交互体验。传统的HTTP协议是无状态的、单向的请求-响应模式&#xff0c;客户端发起请求&#xff0c;服务器返回响应&#xff0c…

【语义分割】记录2:yolo系列

图像分割笔记1、源码下载2、数据获取3、环境配置4、模型训练5、模型推理6、模型部署6.1 yolov5_flask学习7、版本上传1、源码下载 git clone https://github.com/ultralytics/ultralytics.gitgit回到对应版本&#xff1a; 方式一&#xff1a;使用 git checkout&#xff08;临…

ubuntu22.04系统 算力4090服务器 病毒防护 查杀等 运维入门(三)clamAV工具离线查杀

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

微信小程序文件下载与预览功能实现详解

在微信小程序开发中&#xff0c;文件处理是常见需求&#xff0c;尤其是涉及合同、文档等场景。本文将通过一个实际案例&#xff0c;详细讲解如何实现文件的下载、解压、列表展示及预览功能。 功能概述 该页面主要实现了以下核心功能&#xff1a; 列表展示可下载的文件信息支持 …

postgresql执行创建和删除时遇到的问题

删除数据库的时候出现的问题 有连接在占用 postgres=# DROP DATABASE "subgraph-dev"; ERROR: database "subgraph-dev" is being accessed by other users DETAIL: There is 1 other session using the database.强制断开在用的连接 -- 替换 subgraph…

linux 应用层直接操作GPIO的方法

了解&#xff01;你使用的是 Rockchip RK3588S 平台&#xff0c;需要操作 GPIO3_D5_d 这个引脚&#xff08;即 MCU_JTAG_TMS_M1/.../GPIO3_D5_d&#xff09;。以下是基于你提供的系统信息的具体操作步骤&#xff1a;&#x1f50d; 第一步&#xff1a;确认 GPIO 系统编号 在 RK3…