作者:zollty资深程序员和架构师,私底下是个爱折腾的技术极客架构师社区合伙人!
APM(ApplicationPerformance Management)是一种应用性能监控工具,通过汇聚业务系统各处理环节的实时数据分析业务系统各事务处理的交易路径和处理时间,实现对应用的全链路性能监测
Skywalking(简称SW)有如下菜单和功能:
-
请求热力图(反映:请求数量和响應时间)
-
应用吞吐量(cpm,每分钟调用次数)
-
用户、应用、各种中间件的调用关系图
-
应用之间的调用吞吐量(cpm)和平均响应时间(rt)
-
应用的服务可用率(SLA)
-
应用基本信息(ip、host等)
-
实例进程的平均响应时间
-
实例进程的CPU、内存、JVM情况
-
实例进程的请求量走势图
-
应用的慢服务Top10
-
服务平均吞吐量(cpm)、平均响应时间(RT)、可用率(SLA)
-
服务依赖关系图以及调用的平均吞吐量和响应时间
-
Alarm(告警界面)
-
显示服务器、应用、服务的告警信息
-
Trace(链路追踪界面)
-
支持按各种条件查询调用
-
查看调用的span链路信息(时序图)
-
可以看到各span的耗时、异常和其他信息(不同的span支持不同的信息例如DB类型的,可以打印出sql)
Pinpoint(简称PP)有如下菜单和功能:
-
请求热力点图和柱状图(反映:请求数量和响应时间)
-
时间段内总的调用成功、失败次数
-
支持按时间选择查看调用列表(跳到链路追踪页面)
-
查看调用的span链路信息(时序图)
-
可以看到各span的耗时和类名、方法名(如果DB操作可以打印出sql和参数)
-
看不太懂,只知道有非常详细的JVM监控信息
二、个人使用感受和优缺点对比
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不支持。
1、不支持异步执行的调用链追踪(比如多线程、MQ)而SW通过注解可以支持。
2、功能比较少例如缺少平均响应、平均吞吐量等數据,缺少慢服务的统计
3、调用链信息,可以扩展和丰富的程度要低于SW(SW可以通过注解扩展)。
-
对应用性能的影响实测两者差不多,SW稍微好一些(吞吐量比PP大概高5%——我们做过单个span的性能测试具体数据就不贴出来了)。
-
实时告警通知暂未测试,我个人希望有 服务異常、JVM异常、慢服务、高负载等的订阅和通知功能然而貌似这两个APM都没有很直观的展示出有这方面的能力。
-
PP相比后起之秀SW要更稳定、噫用,而且并没有明显短处;
-
SW号称的异步调用链追踪(是有代码侵入性的)我认为PP只要稍加改进也可以支持;
-
小公司,推荐用PP等SW成熟の后再说吧;
-
有二次开发实力的公司,需进一步对比两者的可扩展性、二次开发效率选择一个更能满足自己定制需求的APM。
如有收获点個在看,诚挚感谢