首页 > 其他分享 >Springboot自定义Prometheus采集指标

Springboot自定义Prometheus采集指标

时间:2024-09-29 16:01:37浏览次数:9  
标签:sysName Springboot 自定义 micrometer 指标 Prometheus io import

添加依赖

<!--增加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文件

spring:
    application:
        name: my-metrics

server:
    port: 8080
    tomcat:
      mbeanregistry:
          enabled: true #启用Tomcat MBean注册表,以便于通过JMX进行监控和管理

management:
    endpoints:
        web:
            exposure:
                include: "*" #将所有Actuator端点暴露
    prometheus:
        metrics:
            export:
                enabled: true #启用Prometheus指标导出
    metrics:
        tags:
            application: ${spring.application.name}

自定义指标

import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tags;
import jakarta.servlet.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

/**
 * @Description 使用过滤器添加自定义指标
 **/
@Component
public class MyMetricsFilter implements Filter {

    @Autowired
    private MeterRegistry registry;

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //自定义指标方法
        addMetrics();
        filterChain.doFilter(servletRequest, servletResponse);
    }

    /**
     * 添加自定义指标
     */
    public void addMetrics() {
        List<String> sysNames = new ArrayList<>();
        sysNames.add("sys1");
        sysNames.add("sys2");

        sysNames.forEach(sysName -> {
            Gauge.builder("my.metrics.monitor", getValue(sysName)) // getValue(sysName)返回一个Supplier<Number>对象, 对象值为匿名函数, 匿名函数会在创建指标时调用,返回自定义指标的值
                    .tags(Tags.of("service", sysName)) // 指标标签
                    .description("my metrics monitor") // 指标描述
                    .register(registry); // 注册到MeterRegistry
        });
    }

    public Supplier<Number> getValue(String sysName) {
        return () -> {
            // 在这里使用 sysName 参数, 编写自定义指标的逻辑
            System.out.println("System name: " + sysName);
            return sysName.hashCode();
        };
    }
}

获取自定义指标

启动项目,访问http://localhost:8080/actuator/prometheus,即可获取自定义指标
image

标签:sysName,Springboot,自定义,micrometer,指标,Prometheus,io,import
From: https://www.cnblogs.com/zjh/p/18440208

相关文章

  • Python基于自定义方法的排序
    Python基于自定义方法的排序在Python中,排序是一个常见的任务,它可以帮助我们根据特定的规则对数据结构(如列表)中的元素进行排序。Python的内置排序方法,如列表的sort()函数和内置函数sorted(),提供了非常灵活的排序机制,特别是通过key参数,我们可以指定一个自定义的函数来决定排序的顺......
  • 基于Java+Springboot+Vue开发的大学竞赛报名管理系统源码+开发文章1.3万字
    项目简介该项目是基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践......
  • 基于qwen2.5 手把手实战 自定义数据集 微调(llama-factory)
    基于qwen2.5手把手实战自定义数据集微调(llama-factory)准备工作1.数据集准备(例:民法典.txt)2.服务器准备(阿里云DSW白嫖)3.环境配置pip升级模型下载微调助手4.数据集处理脚本文件4.1文本分割(bert-base-chinese)4.2数据集生成4.3.1数据集转换(只有一个数据集)alpaca格式......
  • SpringBoot常用注解(超级详细,快快收藏)
    目录(1)@SpringBootApplication(2)@RestController(3)@RequestMapping(4)@GetMapping(5)@PostMapping(6)@PutMapping(7)@DeleteMapping(8)@RequestParam(9)@PathVariable(10)@RequestBody(11)@ResponseBody(12)@Autowired(13)@Component(14)@Service(15)@Reposit......
  • PbootCMS自定义前台404错误页面
    以下是一个简单的404错误页面示例代码:<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>......
  • springboot+vue+elementui大文件分片上传
    工具类方法:/***大文件分片上传*@paramfileName文件名*@paramfile文件*@paramfileKey文件key*@paramshardIndex当前分片下标*@paramshardTotal分片总量*/publicstaticvoidbigUpload(StringfileNam......
  • SpringBoot+Docker +Nginx 部署前后端项目Hf
    部署SpringBoot项目(通关版)一、概述使用java-jar命令直接部署项目的JAR包和使用Docker制作镜像进行部署是两种常见的部署方式。以下是对这两种方式的概述和简要的优劣势分析:1.1、使用java-jar命令直接部署项目的JAR包概述:通过java-jar直接部署项目的JAR包是最简单直......
  • 海滨体育馆管理系统:SpringBoot实现技巧与案例
    2系统关键技术2.1JAVA技术Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类库,......
  • 2024最新高分源码基于SpringBoot+Vue+uniapp的办事大厅政务预约系统(源码+lw+部署文档
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 2024最新高分源码基于SpringBoot+Vue+uniapp的网络办公系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......