spring boot metrics监控指标使用教程
作者:kl 发布时间:2022-01-10 08:42:16
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


猜你喜欢
- 基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!Apple.javapackage strategy;/**
- 近期工作内容需要涉及到相机开发,其中一个功能点就是实现一个相机预览页底部的滑动指示器,现在整理出来供大家讨论参考。先上一张图看下效果:主要实
- 本文研究的主要内容是Java编程二项分布的递归和非递归实现,具体如下。问题来源:算法第四版 第1.1节 习题27:return (1.0 -
- 请求进入DispatcherServlet的doDispatch后,获取HandlerMethod。然后根据HandlerMethod来确认
- 在android开发中,当不满足触发条件就按返回键的时候,就要对此进行检测。尤其是当前Activity需要往前一个Activity传送消息时
- springboot @ConfigurationProperties和@PropertySource区别@ConfigurationPro
- 1.注解方式,yml文件配置上以下就可以直接使用mybatis-plus: mapper-locations: classpath:mapp
- 本文实例讲述了C#利用System.Uri转URL为绝对地址的方法。分享给大家供大家参考。具体分析如下:在使用ASPOSE.Word生成Wo
- 字节流和字符流对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流。1.从对文件的操作来讲,有读和写的操作——也就是
- Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同
- 一、Socket 基础知识1.1 Socket 概述Socket 指的是“插座”,是应用层与传输层之
- yml配置规则属性跟属性值之间使用“:”和一个“空格”隔开,
- Fragment的主要意义就是提供与Activity绑定的生命周期回调。Fragment不一定要向Activity的视图层级中添加View.
- 一、XML DOM概述XML 文档大小写敏感、属性用引号括起来,每一个标记都要闭合。DOM是XML文档的内存中树状的表示形式。继承关系图:X
- 本文介绍了spring boot的maven配置依赖详解,分享给大家,具体如下:我们通过引用spring-boot-starter-pare
- Java List 用法实例详解Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解
- java 中http请求为了防止乱码解决方案今天做一个与地图有关的项目,需要发起http请求地图数据 写了一个工具类,希望大家都能用上吧pa
- Android 自定义阴影效果详解及实例Android5.X中,Google为其增加了两个属性 android:elevation=” ”
- 1.ArrayList 是基数组结构的,需要连续的内存空间从构造函数可以看出,ArrayList内部用一个Object数组来保存数据。对于无
- 上一篇 主要介绍了如何通过蓝牙连接到打印机。这一篇,我们就介绍如何向打印机发送打印指令,来打印字符和图片。1. 构造输出流首先要明确一点,就