开源性能监控工具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

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo