接入介绍
在使用 Spring Boot 作为开发框架时,需要监控应用的状态,例如 JVM/Spring MVC 等。
针对Spring Boot应用,社区提供了开箱即用的Spring Boot Actuator框架,方便Java开发者进行代码埋点和监测数据收集、输出。
从Spring Boot 2.0开始,Actuator将底层改为Micrometer,同时提供了更强、更灵活的监测能力。
Micrometer是一个监测门面,可以类比成监测界的Slf4j ,借助Micrometer,应用则能够对接各种监测系统。例如,AppOptics、Datadog、Elastic、InfluxDB以及Prometheus监控等。
Micrometer在将Prometheus监控指标对接到Java应用的指标时,支持应用开发者用三个类型的语义来映射:
Micrometer指标类型 | Prometheus监控指标类型 | 典型用途 |
---|---|---|
Counter | Counter | 计数器,单调递增场景。例如,统计PV和UV,接口调用次数等。 |
Gauge | Gauge | 持续波动的变量。例如,资源使用率、系统负载、请求队列长度等。 |
Timer | Histogram | 统计数据分布。例如,统计某接口调用延时的P50、P90、P99等。 |
DistributionSummary | Summary | 统计数据分布,与Histogram用途类似。 |
- Micrometer中的Counter指标类型对应于Prometheus监控中的Counter指标类型,用来描述一个单调递增的变量。如某个接口的访问次数、缓存命中或者访问总次数等。Timer在逻辑上蕴含了Counter,即如果使用Timer采集每个接口的响应时间,必然也会采集访问次数。因此无需为某个接口同时指定Timer与Counter两个指标。
- MicroMeter中的Gauge指标类型对应于Prometheus监控中的Gauge指标类型,用来描述在一个范围内持续波动的变量。如CPU使用率、线程池任务队列数等。
- MicroMeter中的Timer指标类型对应于Prometheus监控中的Histogram,用来描述与时间相关的数据。如某个接口RT时间分布等。
- Micrometer中的DistributionSummary指标类型对应Prometheus监控中的Summary指标类型 ,与Histogram类似,Summary也是用于统计数据分布的,但由于数据的分布情况是在客户端计算完成后再传入Prometheus监控进行存储,因此Summary的结果无法在多个机器之间进行数据