测试工具常见开源APM监控工具介绍
Posted 非功能之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试工具常见开源APM监控工具介绍相关的知识,希望对你有一定的参考价值。
随着分布式应用、云计算的不断深入发展,业务系统的逻辑结构变得越来越复杂,目前很多应用都采用了分布式架构,即从一个大程序演变成一系列服务的形式,运行在不同的平台不同的机器上,这种架构的复杂性和灵活性为发现和定位性能问题、系统安全运维带来了更高的挑战。此时需要一种新的技术手段,用来关注应用哪些问题影响了企业服务的性能和可用性,关注如何识别这些问题以及如何解决这些问题。本文将介绍目前业界主流的APM技术工具,解决分布式架构带来的监控和运维上的挑战。
1、背景知识
APM(ApplicationPerformance Management)是一种应用性能监控工具,通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理时间,实现对应用的全链路性能监测。目前主流的APM工具,基本都是参考了Google的Dapper(大规模分布式系统的跟踪系统)体系,通过跟踪业务请求的处理过程,完成对应用系统在前后端处理、服务端调用的性能消耗跟踪,提供可视化的界面来展示对跟踪数据的分析。
APM工具与传统的性能监控工具的区别在于,不仅仅提供一些零散的资源监控点和指标,其主要关注在系统内部执行、系统间调用的性能瓶颈分析,这样更有利于定位到问题的具体原因。
2、工具介绍
近年来APM技术和市场得到了快速发展,随着移动互联网的爆发,APM的产业扩张的比较明显,重心也从最初的IT和技术运维转到了商业核心业务,相关产品也如雨后春笋般大量涌现出来,商业产品有国外的Dynatrace、Appdynamics、New Relic,国内的RichAPM、听云、OneAPM等,开源产品也得到了迅速发展。随后小编带大家一起了解几种业界主流的开源APM工具。
2.1、Pinpoint
Pinpoint是由一个韩国团队实现并开源,针对Java编写的大规模分布式系统设计,通过JavaAgent的机制做字节代码植入,实现加入traceid和获取性能数据的目的,对应用代码零侵入。
图1:Pinpoint架构示意图
Pinpoint通过在Host App启动时加入PinpointAgent来采集数据,然后把采集到的跟踪数据和性能数据实时发送到Pinpoint Collector,Collector收集之后存放到HBase数据库中,由HBase做MapReduce运算,分析出分布式系统的机器访问关系拓扑图、每个节点的线程状态、请求/响应数据、调用栈信息、应用程序的性能数据,通过Pinpoint WebUI可以进行实时的展示。
2.2、SkyWalking
Skywalking是由国内一位叫吴晟的工程师开源,已加入Apache孵化器,是一个APM系统,为微服务架构和云原生架构系统设计。它通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。Skywalking支持链路追踪和监控应用组件基本涵盖主流框架和容器,如国产PRC Dubbo和motan等,国际化的spring boot,spring cloud。
图2:Skywalking架构示意图
Skywalking总体架构主要分为三部分:
1)SkywalkingAgent:探针,原理同Pinpoint一样,使用JavaAgent做字节代码植入,用来收集和发送数据到Skywalking Collector;
2)SkywalkingCollector:链路数据收集器,数据可以落地到ElasticSearch或者H2;
3)SkywalkingUI:Web可视化平台,用来展示落地的数据。
2.3、Zipkin
Zipkin是由Twitter开源,是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。Zipkin基于Google的Dapper论文实现,主要完成数据的收集、存储、搜索与界面展示。Java应用端的数据采集通过Brave组件来实现,Brave组件通过实现一系列的Java拦截器,来做到对http/servlet请求、数据库访问的调用过程跟踪,然后在spring之类的配置文件里加入这些拦截器,完成对Java应用的性能数据采集。
图3:Zipkin架构示意图
Zipkin主要分为四个部分:
1)ZipkinCollector:采集数据传输到Collector之后,Collector负责校验数据、存储数据、为数据建立索引;
2)Storage:Zipkin的数据可以存储在Cassandra、ElasticSearch和mysql中;
3)Query API:提供数据的查询和检索服务;
4)Web UI:可视化展示平台,用于展示跟踪数据。
2.4、CAT
CAT是由大众点评开源的项目,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控,可以提供十几张报表展示。Cat的定位是实时监控平台,但与其说是监控平台,更像是个数据仓库,在数据仓库的基础上提供丰富的报表分析功能。CAT实现跟踪的手段是通过在代码里面增加一些“埋点”来记录自己需要的数据,是一个侵入式的项目,开发团队对此大都有抵触情绪。
图4:CAT架构示意图
CAT分客户端和服务器端,客户端使用cat接口向服务器端上报统一格式的日志信息。CAT的客户端是产生日志的地方(一般来说就是被监控的应用,上图中的应用节点),相应的服务器端则是接受日志、消费日志的地方(上图中的server节点),日志消费后生成会日志报表。
3、总结
本文中小编主要介绍了4种主流的开源APM工具,最后我们从代码侵入方式、数据落地方式、性能分析报表等三个方面对上述工具进行对比分析:
通过对比可知,主流APM工具为了更好地进行推广,主要采用了侵入程度低的方式完成对应用代码的改造。并且为了应对云计算、微服务、容器化的迅速发展与应用带来的APM监控的数据的海量增长的趋势,数据落地方式也主要以海量存储数据库为主。未来在数据分析和性能分析方面,大数据和机器学习将在APM领域发挥重要的作用,APM的功能也将从单一的资源监控和应用监控,向异常检测、性能诊断、未来预测等自动化、智能化等方向发展,让我们共同期待开源社区或组织带来功能更强大的免费产品!
非功能之路
长按二维码关注
一起来涨姿势吧~
以上是关于测试工具常见开源APM监控工具介绍的主要内容,如果未能解决你的问题,请参考以下文章