分布式链路追踪工具Sky walking详解

2024-05-02 06:36

本文主要是介绍分布式链路追踪工具Sky walking详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1,为什么要使用分布式链路追踪工具

随着分布式系统和微服务架构的出现,且伴随着用户量的增加,项目的体量变得十分庞大,一次用户请求会经过多个系统,不同服务之间调用关系十分复杂,一旦一个系统出现错误都可能会影响整个请求的处理结果。而因为项目十分庞大,调用链路十分复杂,无法快速定位失败的位置和原因。
除此之外,复杂的分布式系统也面临如下问题:

  • 性能分析:一个服务依赖很多,被依赖的服务也依赖其他服务。如果某个接口耗时突然变长,那未必是直接调用的下游服务慢了,也可能是下游的下游慢了造成的,如何快速定位耗时变长的根本原因
  • 链路梳理:需求迭代很快,系统之间调用关系变化频繁,靠人工难以梳理系统链路拓扑图【系统之间的调用关系】
为了解决这些问题。Google推出了分布式链路跟踪系统Dapper,之后各个互联网公司都参照Dapper的思想推出了自己的分布式链路跟踪系统,而这些系统就是分布式系统下的APM系统

2,什么是APM系统

APM【application performance management】即应用性能管理系统,是对企业系统即时监控以实现对应程序性能管理和故障管理的系统化解决方案。应用性能管理,主要指对企业的关键业务应用进行检测,优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本

APM系统是可以帮助理解系统行为,用于分析性能问题的工具,以便发生故障的时候,能够快速定位问题和解决问题

3,什么是OpenTracing

分布式链路跟踪最先由Goole在Dappper论文中提出,而Open Tracing通过提供平台无关,厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。

4,分布式链路追踪工具的主要工具对比

  • zipkin:Twitter公司开源的一个分布式追踪工具,被Spring Cloud Sleuth集成,使用广泛而稳定。
  • Sky walking:中国人吴晟【华为】开源的一款分布式追踪,分析,告警的工具,现在是Apache旗下的开源项目。
  • cat:大众点评开源的一款分布式链路追踪工具。
工具实现方式接入方式数据收集UI数据存储方案
zipkin拦截请求sleuth,引入依赖和配置链路,耗时一般内存,mysql,es,Cassandra
Sky walkingJava探针,字节码增强Javaagent链路,耗时,cpu,mem,JVM丰富es,mysql,h2,TiDB
cat代码埋点代码入侵链路,耗时,cpu,mem,JVM丰富mysql,hdfs

总结
zipkin

  • 优点:轻量级,Spring cloud集成,使用人数多,成熟
  • 缺点:功能简单,只有链路监控

sky walking

  • 优点,采集数据丰富,UI友好,扩展性高,使用者多,支持中间件以及框架多,社区活跃,
  • 缺点成熟度不够高

cat

  • 优点:采集数据丰富,UI友好,粒度最细
  • 缺点代码入侵,需要改动业务,git不够活跃,更新缓慢,存储支持不够广泛。

详细可查看 APM工具对比

5,Sky walking概述

根据官方解释,Sky walking是一个可观测分析平台【Observability Analysis Platform 简称OAP】和应用性能管理系统【Application Performance Management】简称APM。提供分布式链路追踪,服务网格遥测分析,度量聚合和可视化一体化解决方案。

主要特点

  • 多语言探针,Java,.net core和node.js。
  • 多监控手段,语言探针和Service mesh。
  • 轻量高效,不需要额外搭建大数据平台。
  • 模块化架构,UI,存储,集群管理多种机制可选。
  • 支持告警。
  • 优秀的可视化效果

Sky walking官网

6,Sky walking架构图

在这里插入图片描述
架构整体包含一下三个部分:

  • 探针【agent】:负责进行数据收集,包含Tracing【链路】和Metrics【度量】的数据,agent会被安装到服务所在的服务器上,一遍方便数据获取。
  • 可观测分析平台OAP:接收探针发送的数据,并在内存中使用分析引擎【Analysis Core】进行数据的整合运算,然后将数据存储到对应的存储介质上,比如ES,MySQL数据库,H2数据库等。同时OAP还使用查询引擎提供HTTP查询接口。
  • Sky walking提供单独的UI进行数据查看,此时UI会调用OAP提供的接口,获取对应的数据然后进行展示。

SkyWalking主要概念

  • 服务【Service】
  • 端点【Endpoint】
  • 实例【Instance】

如下图
在这里插入图片描述
上图中,我们编写了用户服务,这是一个web项目,在生产中部署了两个节点:192.168.1.100和
192.168.1.101。

  • 用户服务就是Sky walking的服务【Service】,用户服务其实就是一个独立的应用【Application】,在6.0之后的Sky walking将应用改名为服务【service】
  • 用户服务对外提供的HTTP接口比如【/usr/queryAll】就是一个端点,端点就是对外提供的接口
  • 192.168.1.100和192.168.1.101这两个相同服务部署的节点就是实例,实例指同一个服务可以部署多个。

7,环境搭建

7.1打开官网,点击下载

在这里插入图片描述

7.2下载对应的Sky walking版本

在这里插入图片描述

7.3 解压
tar -zxvf apache-skywalking-apm-9.0.0.tar.gz -C ./
7.4启动

解压后进入Sky walking的bin目录下
在这里插入图片描述
启动

./start.sh
# windowns系统使用./start.bat

在这里插入图片描述
使用jps命令查看进程
在这里插入图片描述
访问http://localhost:8080
在这里插入图片描述
部署成功

7.5下载探针

在这里插入图片描述
将探针解压

7.6 快速搭建一个微服务项目

从零搭建AlibabaCloud微服务项目

7.7 在本地IDEA项目中配置探针

项目结构如下
在这里插入图片描述
skywalking-agent就是解压后的探针

配置探针
在这里插入图片描述
在这里插入图片描述
添加

-javaagent:./skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=admin

命令解析
./skywalking-agent/skywalking-agent.jar 是探针的位置,如下图
在这里插入图片描述

Dskywalking.agent.service_name是在Sky walking服务中的名字
修改skywalking trace数据的后端地址
在这里插入图片描述
重新启动
在这里插入图片描述
启动成功

7.8 Sky walking UI界面查看

在这里插入图片描述

8 编写一个测试接口

@RestController
public class AdminController {@GetMapping("/getUserById")public String getUserById() {return "user:123";}
}

访问 http://localhost:8086/getUserById
查看拓扑图
在这里插入图片描述
链路追踪图
在这里插入图片描述
至此Sky walking环境搭建完成

这篇关于分布式链路追踪工具Sky walking详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953598

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

详解python pycharm与cmd中制表符不一样

《详解pythonpycharm与cmd中制表符不一样》本文主要介绍了pythonpycharm与cmd中制表符不一样,这个问题通常是因为PyCharm和命令行(CMD)使用的制表符(tab)的宽... 这个问题通常是因为PyCharm和命令行(CMD)使用的制表符(tab)的宽度不同导致的。在PyChar