spring boot metrics监控指标使用教程

作者:kl 时间:2022-01-10 08:42:16 

spring boot metrics监控指标使用教程

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

来源:http://www.kailing.pub/article/index/arcid/316.html

标签:springboot,metrics,教程
0
投稿

猜你喜欢

  • Spring 整合 MyBatis的实现步骤

    2022-08-21 16:51:14
  • 线程池ThreadPoolExecutor并行处理实现代码

    2022-10-13 23:44:01
  • java简单模仿win10计算器

    2023-06-25 21:57:20
  • Android WorkManager使用以及源码分析

    2022-02-04 01:10:26
  • C# TabControl控件中TabPage选项卡切换时的触发事件问题

    2022-10-30 08:11:13
  • C#使用doggleReport生成pdf报表的方法

    2022-12-29 14:55:28
  • Android开发手册SeekBar拖动条使用实例

    2022-02-21 13:59:45
  • Netty分布式高性能工具类异线程下回收对象解析

    2023-07-09 21:02:43
  • IntelliJ IDEA使用教程从入门到上瘾(2019图文版)

    2023-03-30 17:00:49
  • 基于SqlSessionFactory的openSession方法使用

    2023-02-26 23:10:15
  • SpringBoot四种读取properties文件的方式(小结)

    2023-10-10 03:25:14
  • Java设计模式之共享模式/享元模式(Flyweight模式)介绍

    2023-06-15 04:35:10
  • java中String的一些方法深入解析

    2023-11-25 21:48:56
  • 解析JDK14中的java tools简介

    2023-04-18 10:28:37
  • 以武侠形式理解Java LinkedList源码

    2021-12-27 20:34:23
  • 详解MyBatis逆向工程

    2021-12-12 02:38:04
  • Java创建线程的两种方式

    2023-09-12 05:20:55
  • Java遍历Properties所有元素的方法实例

    2022-09-08 14:58:24
  • Spring整合Quartz开发代码实例

    2022-03-12 16:37:26
  • java新手入门——String类详解

    2022-02-23 08:17:26
  • asp之家 软件编程 m.aspxhome.com