一、zipkin
github地址:
https://github.com/openzipkin/zipkin
zipkin是一个分布式的追踪系统,它能够帮助你收集服务架构中解决问题需要的时间数据,功能包括收集和查找这些数据。如果日志文件中有跟踪ID,可以直接跳转到它。否则,可以根据服务、操作名称、标记和持续时间等属性进行查询。例如在服务中花费的时间百分比,以及哪些环节操作失败。特点是轻量,使用部署简单。
zipkin还提供了一个UI界面,它能够显示通过每个应用程序的跟踪请求数。这有助于识别聚合行为,包括错误路径或对不推荐使用的服务的调用。
应用程序需要“检测”才能向Zipkin报告跟踪数据。这通常意味着需要配置一个用于追踪和检测的库。最流行的向Zipkin报告数据的方法是通过http或Kafka,尽管还有许多其他选项,如apache,activemq、gRPC和RabbitMQ。提供给UI存储数据的方法很多,如存储在内存中,或者使用受支持的后端(如apachecassandra或Elasticsearch)持久存储。
二、 skywalking
github地址:
https://github.com/apache/incubator-skywalking
skywalking是本土开源的调用链追踪系统,包括监控、跟踪、诊断功能,目前已加入Apache孵化器,专门为微服务、云本地和基于容器(Docker、Kubernetes、Mesos)架构设计。
主要功能如下:
1)服务、服务实例、端点指标数据分析
2)根本原因分析,在运行时评测代码
3)服务拓扑图分析
4)服务、服务实例和端点依赖性分析
5)检测到慢速服务和终结点
6)性能优化
7)分布式跟踪和上下文传播
8)数据库访问度量。检测慢速数据库访问语句(包括SQL语句)。
9)报警
10)浏览器性能监视
三、pinpoint
github地址:
https://github.com/naver/pinpoint
pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。Pinpoint提供了一个解决方案,可以帮助分析系统的整体结构,以及通过跟踪分布式应用程序中的事务来分析其中的组件是如何相互连接的。
功能如下:
1)一目了然地了解应用程序拓扑
2)实时监视应用程序
3)获得每个事务的代码级可见性
4)安装APM代理程序,无需更改一行代码
5)对性能的影响最小(资源使用量增加约3%)
Pinpoint的可视化UI界面: