spring boot metrics使用指南

spring boot metrics是什么?

针对应用监控指标暴露,spring boot有一套完整的解决方案,而且内置了好不少的指标收集器,如tomcat、jvm、cpu、kafka、DataSource、spring mvc(缺乏直方图的数据)等。基于micrometer技术,几乎支持全部主流的监控服务的指标数据收集,这其中就包含了咱们线上使用的Prometheus,这份指南旨在最快速接入boot的metrics功能,暴露prometheus的数据监控指标服务。web

micrometer地址:https://micrometer.io/spring

1、引入依赖

implementation ('org.springframework.boot:spring-boot-starter-actuator')
implementation ('io.micrometer:micrometer-registry-prometheus:1.6.1')
implementation ('io.micrometer:micrometer-core:1.6.1')

actuator是spring boot中负责运维功能的包,这里主要是经过它来暴露和管理metrics接口的。其余两个依赖是为了包兼容引入的,在sprinr boot2.x中,actuator中默认引入的prometheus支持包存在兼容性问题,若是你的环境不存在兼容性问题,能够不用引入下面两个依赖。api

2、配置启用

经过以下的配置,来开启prometheus的端点接口服务浏览器

management.endpoints.web.exposure.include=prometheus

开启服务后,会暴露/actuator/prometheus 端点接口服务。在浏览器中,输入http://localhost:8080/actuator/prometheus 。能够看到内置的指标收集器收集到的监控指标tomcat

3、独立的web服务

默认状况下,/actuator/prometheus端点服务跟随应用的web容器一块儿发布,可是当咱们的web服务面向公网须要受权认证时,可使用以下配置启用独立的容器暴露服务mvc

management.server.port=8081

4、全局标签设置

在metrics监控系统设计中,tag用来标记区分一组指标集。好比咱们在监控grpc时,servicename就是是监控指标的其中一个tag。有的时候为了区分环境和应用,咱们会设置一些全局的tag:app

management.metrics.tags.application = ${spring.application.name}
management.metrics.tags.region = bj

如上配置,咱们添加了一个应用的名字和一个区域的tag。这种配置是全局的。虽然grpc的组件可能只记录了servicename,可是最终数据呈现时,也会带上全局配置的tag运维

5、自定义指标收集

spring boot全部的指标最终都是经过MeterRegistry来注册的,这个实例被spring托管,因此你能够在spring的上下文中注入这个实例,结合micrometer指标定义(点我),自定义本身的监控指标jvm

6、推送or拉取指标

目前,咱们线上是经过k8s的monitoring.coreos.com/v1 api定义指定prometheus主动拉取应用pod的监控指标信息,主要是由于以前的metrics系统是基于prometheus client模式暴露的。在基于spring boot的metrics系统中,主动推送数据的模式很是容易实现,这里须要prometheus-gateway支持spring-boot

引入依赖

implementation("io.prometheus:simpleclient_pushgateway")

启用push模式

#开启prometheus的数据推送模式
management.metrics.export.prometheus.pushgateway.enabled=true
#prometheus服务端地址
management.metrics.export.prometheus.pushgateway.base-url=localhost:9091
#推送数据的频率,默认1m(单位分钟)
management.metrics.export.prometheus.pushgateway.push-rate=1m
#在jvm关闭以前将数据推送出去
management.metrics.export.prometheus.pushgateway.shutdown-operation=push
相关文章
相关标签/搜索