概述
APM Agent会周期性采集一些性能指标数据,用来衡量应用的总体健康状况。可以采集JVM、GC、服务调用、异常、外部调用、数据库访问、Profiler性能分析以及其他中间件的指标调用等数据,帮助用户全面掌握应用的运行情况。
APM对指标数据的采集有严格的定义,每一种采集的数据类型对应一个采集器,比如采集java和Node.js应用的JVM数据,那么对应有JVM采集器,一个采集器会采集多个指标集的数据。详细的采集器及指标集信息请参见采集中心。
采集器被部署到环境后形成监控项,在数据采集的时候监控项决定了采集的数据结构和采集行为。
- 采集周期:监控项具有数据采集器的周期属性。当前数据采集周期为一分钟,不支持用户调整。
- 监控项状态:默认为enable状态,用户可以将监控项设置为disable状态,这样Agent就不会拦截该指标数据,也不会上报数据。具体操作请参见监控项启停。
- 采集状态:采集实例和监控项会有一个采集状态信息。如果出现采集错误,可以通过采集状态查看。常见错误是主键太多,导致客户端数据汇聚异常。
监控项类型
Agent会自动发现系统采集的插件类型,并且将采集器实例化,形成监控项。监控项是实例化在一个环境上的。
由于采集器种类较多,会导致用户区分困难。系统后台会定义一些类型,每种采集器都会归到一种类型下,这样方便用户查看数据。
APM应用指标监控可以度量应用的整体健康状况。拓扑、接口调用、基础监控、异常为基本的监控项。其他的监控项,如:外部调用、通信协议、数据库、Web容器、缓存、消息队列,会由Agent根据用户服务的使用情况,自动发现予以显示。
应用指标监控仅展示接入应用涉及的监控项的指标。接入应用不涉及的监控项的指标,不做展示。
根据采集器的作用可以将监控项分为以下几种类型:
- 拓扑:拓扑图展示服务之间一段时间的调用关系,可以是从调用方统计的,也可以是从被调用方统计的,并且可以查看这个调用关系的趋势图。
- 接口调用:指外部服务调用当前应用的监控类型。
- 基础监控:用来监控系统性能的基础监控指标的监控类型。
- 异常:用来监控应用的异常信息。
- 外部调用:是指当前应用调用外部服务的监控类型。
- 数据库: 对数据库的访问进行监控。
- 缓存:是对Redis等缓存系统的监控,会采集指令级别的细粒度的指标数据。
- web容器:对tomcat等web容器的监控,一般会采集系统总的处理线程数,busy线程数,连接数等;用于衡量系统总的容量。
- 消息队列:对kafka、RabbitMq等消息系统的监控,包含发送端和接收端的监控。在接收端的处理函数,可以产生调用链信息。
- 通信协议:对websocket等通信协议的监控。
- profiler性能分析:自动获取应用程序运行过程中,CPU Time、Allocated Memory、Latency以及Live Object Memory的使用情况,通过火焰图实时展示每一个方法的调用关系和执行率,帮助优化代码性能。
- Debugging诊断:Debugging诊断可协助用户分析线程状况,获取方法及对象实时参数。方便开发人员从实时的远程应用程序中获取调试信息,而无需重新启动应用程序,也不会阻止它并导致服务停机。
- 远程过程调用:对GRPCServer等远程过程调用的监控。
监控项配置
每个监控项对应的采集器会定义一些采集参数,用户可以在页面更改采集参数,并且随着心跳参数下发到Agent,更改采集行为。比如默认情况,出于安全考虑APM不会采集redis指令里面的内容,如果用户有需求,可以更改监控项的采集参数,实现具体指令数据内容的采集。采集参数也可以定义在环境标签上面,这样对应的环境标签下的采集器会自动继承采集参数属性,实现配置自动化。
监控项视图
在指标监控详情界面,一个监控项会对应一个或者多个tab的视图,每个视图都对应一个指标集合。视图当前支持汇总表格、趋势图、最近数据表格和原始表格几种类型,详情请参见监控项视图。