top性能监控(APM性能监控工具)

一、背景

在接口性能优化和系统稳定性方面,我们通常使用APM工具。 APM(Application Performance Management)是一种应用程序性能管理工具,可以对企业的应用系统进行实时监控,并提供性能分析、故障定位等功能,帮助企业解决应用程序性能问题。

APM工具可以监控接口的每个逻辑的耗时情况,该接口调用了哪些服务以及调用频次,以及系统的运行状况,包括请求量、失败量、成功量,以及失败请求对应的接口等信息。这些信息可以帮助我们发现并优化性能瓶颈、定位问题,进而提高系统稳定性,市面上的APM工具:

CAT(开源)

由国内美团点评开源的,基于 Java 语言开发,目前提供 Java、C/广电大流量卡C++、Node.js、Python、Go 等语言的客户端,监控数据会全量统计。国内很多公司在用,例如美团点评、携程、拼多多等。CAT 需要开发人员手动在应用程序中埋点,对代码侵入性比较强。

Zipkin(开源)

由 Twitter 公司开发并开源,Java 语言实现。侵入性相对于 CAT 要低一点,需要对web.xml 等相关配置文件进行修改,但依然对系统有一定的侵入性。Zipkin 可以轻松与 Spring Cloud 进行集成,也是 Spring Cloud 推荐的 APM 系统。

Pinpoint(开源)

韩国团队开源的 APM 产品,运用了字节码增强技术,只需要在启动时添加启动参数即可实现 广电大流量卡APM 功能,对代码无侵入。目前支持 Java 和 PHP 语言,底层采用 HBase 来存储数据,探针收集的数据粒度非常细,但性能损耗较大,因其出现的时间较长,完成度也很高,文档也较为丰富,应用的公司较多。

SkyWalking(开源)

国人开源的产品,2019 年 4 月 17 日 SkyWalking 从 Apache 基金会的孵化器毕业成为顶级项目。目前 SkyWalking 支持 Java、.Net、Node.js 等探针,数据存储支持MySQL、ElasticSearch等。

还有很多不开源的 APM 系统,例如,淘宝鹰眼、Google Dapper 等等。

下面详细介绍SkyWalking广电大流量卡和Pinpoint两款产品

二、Skywalking

Skywalking是一个可观测性分析平台和应用性能管理系统,它也是基于OpenTracing规范、开源的AMP系统。Skywalking提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持Java, .Net Core, PHP, NodeJS, Golang, LUA, c++代理,支持Istio +特使服务网格。

我们在学习Skywalking之前,可以先访问官方提供的控制台演示

演示地址:http://demo.skywalking.apache.org/

账号:skywalking 密码:skywalking

核心功能

服务、服广电大流量卡务实例、端点指标分析。服务拓扑图分析服务、服务实例和端点(Endpoint)SLA 分析慢查询检测告警

特点

多语言自动探针,支持 Java、.NET Code 等多种语言。为多种开源项目提供了插件,为 Tomcat、 HttpClient、Spring、RabbitMQ、MySQL 等常见基础设施和组件提供了自动探针。微内核 + 插件的架构,存储、集群管理、使用插件集合都可以进行自由选择。支持告警。优秀的可视化效果。

三、Pinpoint

Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。

服务拓扑图:对整个系统中应用的调用关系进行了可视化的展广电大流量卡示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等

请求响应散点图:以时间维度进行请求计数和响应时间的展示,拖动图表可以选择对应的请求查看执行的详细情况。

请求调用栈查看:对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。

应用状态、机器状态检查:通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。

架构组成

Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 和 Web U广电大流量卡I。

Agent组件:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可

Collector组件:数据收集模块,接收Agent发送过来的监控数据,并存储到HBase

WebUI:监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能

安装部署

#克隆官方提供的docker git git clone https://github.com/pinpoint-apm/pinpoint-docker.git cd pinpoint-docker docker-compose pull && docker-compose up -d #flink页面: http://localhost:8081 #pipo广电大流量卡int页面:http://localhost:8080 #quickapp页面:http://localhost:8085

四、Skywalking和Pinpoint对比

Skywalking的不足:

针对单个应用的请求热力图,只能看到请求数量,看不到响应时间分布。应用界面,不能直观看到时间段内的请求总数量及错误数量。JVM的监控信息,SW没有PP全面。调用链信息,SW默认只显示入口和组件(如MySQL)调用处的信息,而PP还会显示SpringBean方法的调用信息,更丰富实用,当然SW也可以开启更详细的信息,但是会显示Bean内部方法的所有调用,显得冗余(例如 A调B调C,显示B和C被调用的入口方法广电大流量卡就可以了,不用显示B调用自己内部方法的过程)。SW更新快,BUG较多,值得优化和改进的地方也很多,虽然功能强,但是用起来不一定顺手和实用,还需要时间斟酌和打磨。相对而言,PP功能成熟,功能虽然少,但是都比较经典,用起来比较顺手。SW调用链里面DB类型只能看到SQL,看不到参数化SQL的传值,而PP可以。PP支持实时监控、页面实时刷新,而SW不支持。

Pinpoint的不足:

不支持异步执行的调用链追踪(比如多线程、MQ),而SW通过注解可以支持。功能比较少,例如缺少平均响应、平均吞吐量等数据,缺少慢服务的统计。调用链信息,可以扩展和丰富的程度,要低于SW(SW可以通过注解扩展)。

另外:

对应用性能的广电大流量卡影响,实测两者差不多,SW稍微好一些(吞吐量比PP大概高5%——我们做过单个span的性能测试,具体数据就不贴出来了)。实时告警通知,暂未测试,我个人希望有 服务异常、JVM异常、慢服务、高负载等的订阅和通知功能,然而貌似这两个APM都没有很直观的展示出有这方面的能力。

总的来说:

PP相比后起之秀SW,要更稳定、易用,而且并没有明显短处SW号称的异步调用链追踪(是有代码侵入性的),我认为PP只要稍加改进也可以支持小公司,推荐用PP,等SW成熟之后再说吧有二次开发实力的公司,需进一步对比两者的可扩展性、二次开发效率,选择一个更能满足自己定制需求的APM


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/69821.html

(0)
sunyaqunsunyaqun
上一篇 2024年11月25日
下一篇 2024年11月25日

相关推荐

发表回复

登录后才能评论