概述
APM Agent会周期性采集一些性能指标数据,用来衡量应用的总体健康状况。可以采集JVM、GC、服务调用、异常、外部调用、数据库访问以及其他中间件的指标调用等数据,帮助用户全面掌握应用的运行情况。
APM对指标数据的采集有严格的定义,每一种采集的数据类型对应一个采集器,比如采集java应用的JVM数据,那么对应有JVM采集器,一个采集器会采集多个指标集的数据。
采集器被部署到环境后形成监控项,在数据采集的时候监控项决定了采集的数据结构和采集行为。
- 采集周期:监控项具有数据采集器的周期属性。当前数据采集周期为一分钟,不支持用户调整。
- 监控项状态:默认为enable状态,用户可以将监控项设置为disable状态,这样Agent就不会拦截该指标数据,也不会上报数据。
- 采集状态:采集实例和监控项会有一个采集状态信息。如果出现采集错误,可以通过采集状态查看。常见错误是主键太多,导致客户端数据汇聚异常。
监控项类型
Agent会自动发现系统采集的插件类型,并且将采集器实例化,形成监控项。监控项是实例化在一个环境上的。
由于采集器种类较多,会导致用户区分困难。系统后台会定义一些类型,每种采集器都会归到一种类型下,这样方便用户查看数据。
根据采集器的作用可以将监控项分为以下几种类型:
- 接口调用:是指外部服务调用当前应用的监控类型。
- 基础监控:是用来监控系统性能的基础监控指标的监控类型。
- 异常:用来监控应用的异常信息。
- 外部调用:是指当前应用调用外部服务的监控类型。
- 数据库:是对数据库的访问进行监控。
- 缓存:是对Redis等缓存系统的监控,会采集指令级别的细粒度的指标数据。
- web容器:是对tomcat等web容器的监控,一般会采集系统总的处理线程数,busy线程数,连接数等;用于衡量系统总的容量。
- 消息队列:是对kafka、RabbitMq等消息系统的监控,包含发送端和接收端的监控。在接收端的处理函数,可以产生调用链信息。
- 通信协议:是对websocket等通信协议的监控。
监控项配置
每个监控项对应的采集器会定义一些采集参数,用户可以在页面更改采集参数,并且随着心跳参数下发到Agent,更改采集行为。比如默认情况,出于安全考虑APM不会采集redis指令里面的内容,如果用户有需求,可以更改监控项的采集参数,实现具体指令数据内容的采集。采集参数也可以定义在环境标签上面,这样对应的环境标签下的采集器会自动继承采集参数属性,实现配置自动化。
监控项视图
在指标监控详情界面,一个监控项会对应一个或者多个tab的视图,每个视图都对应一个指标集合。视图当前支持汇总表格、趋势图、最近数据表格和原始表格几种类型。