开源性能监控工具APM之Skywalking和Pinpoint的实测对比

2023-11-06 08:58

本文主要是介绍开源性能监控工具APM之Skywalking和Pinpoint的实测对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!


零,什么是APM?

APM(ApplicationPerformance Management)是一种应用性能监控工具,通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理时间,实现对应用的全链路性能监测。

一、Portal功能对象

Skywalking(简称SW)有如下菜单和功能:

  • Dashboard(仪表界面)

  1. 监控实例的数量信息

  2. 请求热力图(反映:请求数量和响应时间)

  3. 应用平均告警数量

  4. 应用吞吐量(cpm,每分钟调用次数)

  5. 最慢的服务Top10

  • Topology(拓扑界面)

  1. 用户、应用、各种中间件的调用关系图

  2. 应用之间的调用吞吐量(cpm)和平均响应时间(rt)

  3. 应用的服务可用率(SLA)

  • Application(应用界面)

  1. 应用基本信息(ip、host等)

  2. 应用调用关系图

  3. 历史实例进程列表

  4. 实例进程的平均吞吐量

  5. 实例进程的平均响应时间

  6. 实例进程的CPU、内存、JVM情况

  7. 实例进程的请求量走势图

  8. 应用的慢服务Top10

  • Service(服务界面)

  1. 服务平均吞吐量(cpm)、平均响应时间(RT)、可用率(SLA)

  2. 服务依赖关系图以及调用的平均吞吐量和响应时间

  • Alarm(告警界面)

  1. 显示服务器、应用、服务的告警信息

  • Trace(链路追踪界面)

  1. 支持按各种条件查询调用

  2. 查看调用的span链路信息(时序图)

  3. 可以看到各span的耗时、异常和其他信息(不同的span支持不同的信息,例如DB类型的,可以打印出sql)

部分截图

sw-portal

sw-trace

sw-app

Pinpoint(简称PP)有如下菜单和功能:

  • 主仪表界面

  1. 应用调用关系图

  2. 请求热力点图和柱状图(反映:请求数量和响应时间)

  3. 时间段内总的调用成功、失败次数

  4. 响应时间统计图

  5. 支持按时间选择查看调用列表(跳到链路追踪页面)

  • 链路追踪界面

  1. 查看调用的span链路信息(时序图)

  2. 可以看到各span的耗时和类名、方法名(如果DB操作,可以打印出sql和参数)

  • 检阅界面(inspector)

  1. 看不太懂,只知道有非常详细的JVM监控信息

部分截图

pp-portal

pp-trace

二、个人使用感受和优缺点对比

Skywalking的不足:

1、针对单个应用的请求热力图,只能看到请求数量,看不到响应时间分布。

2、应用界面,不能直观看到时间段内的请求总数量及错误数量。

3、JVM的监控信息,SW没有PP全面。

4、调用链信息,SW默认只显示入口和组件(如MySQL)调用处的信息,而PP还会显示SpringBean方法的调用信息,更丰富实用,当然SW也可以开启更详细的信息,但是会显示Bean内部方法的所有调用,显得冗余(例如 A调B调C,显示B和C被调用的入口方法就可以了,不用显示B调用自己内部方法的过程)。

5、SW更新快,BUG较多,值得优化和改进的地方也很多,虽然功能强,但是用起来不一定顺手和实用,还需要时间斟酌和打磨。相对而言,PP功能成熟,功能虽然少,但是都比较经典,用起来比较顺手。

6、SW调用链里面DB类型只能看到SQL,看不到参数化SQL的传值,而PP可以。

7、PP支持实时监控、页面实时刷新,而SW不支持。

Pinpoint的不足:

1、不支持异步执行的调用链追踪(比如多线程、MQ),而SW通过注解可以支持。

2、功能比较少,例如缺少平均响应、平均吞吐量等数据,缺少慢服务的统计。

3、调用链信息,可以扩展和丰富的程度,要低于SW(SW可以通过注解扩展)。

另外:

  1. 对应用性能的影响,实测两者差不多,SW稍微好一些(吞吐量比PP大概高5%——我们做过单个span的性能测试,具体数据就不贴出来了)。

  2. 实时告警通知,暂未测试,我个人希望有 服务异常、JVM异常、慢服务、高负载等的订阅和通知功能,然而貌似这两个APM都没有很直观的展示出有这方面的能力。

总的来说:

  1. PP相比后起之秀SW,要更稳定、易用,而且并没有明显短处;

  2. SW号称的异步调用链追踪(是有代码侵入性的),我认为PP只要稍加改进也可以支持;

  3. 小公司,推荐用PP,等SW成熟之后再说吧;

  4. 有二次开发实力的公司,需进一步对比两者的可扩展性、二次开发效率,选择一个更能满足自己定制需求的APM。

长按订阅更多精彩▼

如有收获,点个在看,诚挚感谢

这篇关于开源性能监控工具APM之Skywalking和Pinpoint的实测对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、