关于springboot:spring-boot-metrics使用指南

7次阅读

共计 1927 个字符,预计需要花费 5 分钟才能阅读完成。

spring boot metrics 是什么?

针对利用监控指标裸露,spring boot 有一套残缺的解决方案,并且内置了好很多的指标收集器,如 tomcat、jvm、cpu、kafka、DataSource、spring mvc(短少直方图的数据)等。基于 micrometer 技术,简直反对所有支流的监控服务的指标数据收集,这其中就蕴含了咱们线上应用的 Prometheus,这份指南旨在最疾速接入 boot 的 metrics 性能,裸露 prometheus 的数据监控指标服务。

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

一、引入依赖

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 反对包存在兼容性问题,如果你的环境不存在兼容性问题,能够不必引入上面两个依赖。

二、配置启用

通过如下的配置,来开启 prometheus 的端点接口服务

management.endpoints.web.exposure.include=prometheus

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

三、独立的 web 服务

默认状况下,/actuator/prometheus 端点服务追随利用的 web 容器一起公布,然而当咱们的 web 服务面向公网须要受权认证时,能够应用如下配置启用独立的容器裸露服务

management.server.port=8081

四、全局标签设置

在 metrics 监控零碎设计中,tag 用来标记辨别一组指标集。比方咱们在监控 grpc 时,servicename 就是是监控指标的其中一个 tag。有的时候为了辨别环境和利用,咱们会设置一些全局的 tag:

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

如上配置,咱们增加了一个利用的名字和一个区域的 tag。这种配置是全局的。尽管 grpc 的组件可能只记录了 servicename,然而最终数据出现时,也会带上全局配置的 tag

五、自定义指标收集

spring boot 所有的指标最终都是通过 MeterRegistry 来注册的,这个实例被 spring 托管,所以你能够在 spring 的上下文中注入这个实例,联合 micrometer 指标定义(点我),自定义本人的监控指标

六、推送 or 拉取指标

目前,咱们线上是通过 k8s 的 monitoring.coreos.com/v1 api 定义指定 prometheus 被动拉取利用 pod 的监控指标信息,次要是因为之前的 metrics 零碎是基于 prometheus client 模式裸露的。在基于 spring boot 的 metrics 零碎中,被动推送数据的模式非常容易实现,这里须要 prometheus-gateway 反对

引入依赖

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
正文完
 0