prometheus在springboot应用中埋点

news/2024/11/13 3:35:27/

添加依赖

        <!-- prometheus指标埋点 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency>

配置application.yml

配置项可参考SpringBoot2.x系列教程之SpringBoot2.x配置大全03。注意的是management.metrics.distribution.sla的新版本将sla -> slo

management:endpoints:web:exposure:include: prometheus  # 打开 Prometheus 的 Web 访问 Pathmetrics:# 下面选项建议打开,以监控 http 请求的 P99/P95 等,具体的时间分布可以根据实际情况设置distribution:slo:http:server:requests: 1ms,5ms,10ms,50ms,100ms,200ms,500ms,1s,5s# 在 Prometheus 中添加特别的 Labelstags:# 必须加上对应的应用名,因为需要以应用的维度来查看对应的监控application: reptile-data-platform-display

本地验证

  • security 放行 “/actuator/**”
  • 运行项目后访问http://localhost:8080/actuator/prometheus 访问到 Prometheus 协议的指标数据,说明相关的依赖配置已经正确。

例子中配置默认配置,对应的端口和路径以实际项目为准

自定义指标

有下面两种方式,以官方的两个实例讲解

  1. prometheus SDK中自带的Counter、Gauge、Histogram、Summary类型build
  2. 继承Collector 实现collect()方法添加自定义指标
@Component
public class MyPrometheusConfig {@Autowiredprivate CollectorRegistry collectorRegistry;@Beanpublic Counter requestTotalCountCollector() {return Counter.build()// 用于指定该指标的名称.name("http_requests_total")// 用于声明该metrics拥有的维度label.labelNames("path", "method", "code").help("http请求总计数").register(collectorRegistry);}@Bean@Primarypublic YourCustomCollector yourCustomCollector(){return new YourCustomCollector().register(collectorRegistry);}
}
public class YourCustomCollector extends Collector{@Overridepublic List<MetricFamilySamples> collect() {List<MetricFamilySamples> mfs = new ArrayList<MetricFamilySamples>();// With no labels.mfs.add(new GaugeMetricFamily("my_gauge", "help", 42));// 创建metrics指标GaugeMetricFamily labeledGauge = new GaugeMetricFamily("my_other_gauge", "help", Arrays.asList("labelname"));// 设置指标的label以及valuelabeledGauge.addMetric(Arrays.asList("foo"), new Random().nextInt(5));labeledGauge.addMetric(Arrays.asList("bar"), new Random().nextInt(5));mfs.add(labeledGauge);return mfs;}
}

添加这两个类后再/actuator/prometheus中找一下http_requests_total、my_gauge、my_other_gauge这三个指标名称

在prometheus.yml中配置节点

- job_name: 'reptile_node'static_configs:- targets: ['localhost:8080']metrics_path: "/actuator/prometheus"

参考资料

  1. springboot整合prometheus
  2. 警惕 Spring Boot Actuator 引发的安全问题
  3. 自定义Metrics:让Prometheus监控你的应用程序(Spring版)

http://www.ppmy.cn/news/669516.html

相关文章

java方法的return有什么作用_java中,return和return null有什么区别吗?

定位以及z-index 定位 定位用来控制元素的位置 定位的关键字是position,position有4个值,分别是relative,absolute,static,fixed当元素定位以后,元素有4个值可以用,分别是le ... JavaScript 与函数式编程 原文:https://bethallchurch.github.io/JavaScript-and-Functional-Prog…

BWT算法解析及Java语言实现

BWT算法将原来的文本转换为一个相似的文本&#xff0c;转换后使得相同的字符位置连续或者相邻&#xff0c;之后可以使用其他技术如&#xff1a;Move-to-fronttransform 和 游程编码 进行文本压缩。 BWT原理&#xff1a; 1. BWT编码 ①对需要转换的字符串后加“$”符号&#…

BWT (Burrows–Wheeler_transform) 解码分析

原文地址&#xff1a; BWT (Burrows–Wheeler_transform)数据转换算法 原文讲解十分详细&#xff0c;但关键地方有点绕&#xff0c;故作分析注释 因为进行的是循环移位&#xff0c;且是循环左移注意下面的性质&#xff1a;   1、L的第一个元素是Text中的最后一个元素   …

BWT算法

BWT算法 来自mengbi_er BWT算法可以将原文本转换成相似文本&#xff0c;并且可以用其他技术进行压缩。 编码方式 &#xff08;1&#xff09; 将文本串后加一个文本中不会出现的字符‘#’。&#xff08;定义#小于文本串中任一字符&#xff09; &#xff08;2&#xff09; 将…

一阶BWT过程

BWT是一种以数据块为操作对象的可你的数据变换方法&#xff0c;其核心思想是对字符串循环移动后得到字符矩阵进行排序和变换。也就是对参考基因组进行了一次有规律的重新排序&#xff0c;变换的目的就是为了方便后续进行查找。 一阶BWT构造和查找的具体过程如下&#xff1a; 一…

C++读取BWT901CL传感器的数据

1 简述 最近在学习人体姿态设别的算法。想着买个角度传感器去尝试下。这个传感器最好是无线的带电池的&#xff0c;这样对我来说是比较方便使用的。我就在淘宝上找到一个一款BWT901CL&#xff0c;这个角度传感器。这个模块挺好用的&#xff0c;有加速度、角速度、角度。而且都…

学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据

由于个人应用到3轴传感器&#xff0c;所以买了直接买了一个9轴的&#xff0c;用于学习STM32Core平台串口2连接维特智能串口Normal协议&#xff0c;然后通过串口1直接打印数据&#xff0c;接收传感器数据和与传感器进行通信&#xff1b;需要看产品文档的可以直接官网搜索文档&am…

BWT压缩算法及FM搜索算法详解

BWT压缩算法其经典地位无可撼动&#xff0c; 思想真是个奇妙的东西&#xff0c; 废话不多说&#xff0c; 让我们来看看她的奇妙之处吧。 假设有一串字符串S"acaacg"&#xff0c; 长度为6&#xff0c; 如果直接对此串进行压缩&#xff0c; 可能是a 1, c 1, a 2, c 1, …