基于 java 项目 APM 工具分析

工具选择

Pinpoint:

一款对Java编写的大规模分布式系统的APM工具,由韩国人开源的分布式跟踪组件。

zipkin:

由Twitter公司开源,开放源代码分布式的跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括:数据的收集、存储、查找和展现。

因zipkin 需要侵入代码, 放弃,成本过高,不再考虑

skywalking:

国产的优秀APM组件,是一个对Java分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。

对比项

探针的性能消耗

组件服务端额影响应做到足够小,数据分析要快,性能占用小

监控的维度

分析的维度越多越好

可扩展性

分布式系统

支持语言

工具名称支持语言
PinpointJava, php
skywalkingJava, C#, PHP, Node.js, Go
因公司使用语言不仅限于 java 与 php 所以在语言方面skywalking更具优势

数据存储

工具名称支持数据库
PinpointHbase
skywalkinges,h2,mysql,TiDb,sharding-sphere
在数据存储方面 Hbease存储能力优秀,Elasticsearch 查询能力优秀,从运维角度分析,Elasticsearch运维成本低于Hbease

jvm监控

监控项skywalkingPinpoint
Heap✔️✔️
Non-Heap✔️✔️
YGC✔️
FGC✔️✔️
DirectBufferMemory✔️
MappedBufferMemory✔️
多指标同一时间点查看✔️
jvm监控方面Pinpoint更加优秀一些

服务监控

监控项skywalkingPinpoint
CPU使用率✔️✔️
Open File Descriptor✔️
数据源✔️
活动线程数✔️
RT✔️✔️
TPS✔️
SLA✔️
Call Per Minutes✔️

扩展性

skywalking:

  • kywalking的collector支持两种部署方式:单机和集群模式。collector与agent之间的通信使用了gRPC。

pinpoint

  • pinpoint也是支持集群和单机部署的。pinpoint agent通过thrift通信框架,发送链路信息到collector。
未经允许不得转载:99ya » 基于 java 项目 APM 工具分析