Spring Boot 3.4.x 和 Micrometer 2.0 的结合 案例 以及使用方法

server/2025/1/23 0:59:58/

Spring Boot 3.4.x 和 Micrometer 2.0 的结合,主要是为了更好地进行应用性能监控。Micrometer 是一个应用性能监控工具,它可以与 Spring Boot 集成,提供一个统一的度量系统,并与各种监控系统(如 Prometheus, Graphite, Datadog, etc.)集成。

以下是一个使用 Spring Boot 3.4.x 和 Micrometer 2.0 的示例,包括基本配置和应用代码。

  1. 添加依赖
    首先,需要在 pom.xml 文件中添加 Micrometer 和相关的监控系统支持依赖。
<dependencies><!-- Spring Boot 3.4.x 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Micrometer core 依赖 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-core</artifactId></dependency><!-- 如果使用 Prometheus 作为监控系统 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency>
</dependencies>

如果你使用的是其他监控系统(如 Datadog、Graphite),可以添加相应的 Micrometer 依赖。

  1. 配置 application.yml 或 application.properties
    在 Spring Boot 项目的配置文件中,设置 Micrometer 和监控系统的相关配置。

application.yml

management:metrics:export:prometheus:enabled: trueendpoint:prometheus:enabled: true
```### application.properties
```bash
management.metrics.export.prometheus.enabled=true
management.endpoint.prometheus.enabled=true

这将使 Prometheus 能够收集 Spring Boot 应用的监控数据。

  1. 创建一个 Spring Boot 应用并暴露指标
    接下来,创建一个简单的 Spring Boot 应用并使用 Micrometer 来暴露指标。
package com.example.demo;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import io.micrometer.core.instrument.MeterRegistry;@SpringBootApplication
public class DemoApplication implements CommandLineRunner {private final MeterRegistry meterRegistry;public DemoApplication(MeterRegistry meterRegistry) {this.meterRegistry = meterRegistry;}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Overridepublic void run(String... args) throws Exception {// 注册一个简单的计数器meterRegistry.counter("my_custom_metric", "type", "example");}
}

在这个例子中,我们通过 MeterRegistry 对象来注册一个自定义计数器,表示应用的某些业务度量。

  1. 查看暴露的指标
    启动 Spring Boot 应用后,Micrometer 将会自动生成默认的指标并暴露到 /actuator/metrics 和 /actuator/prometheus(如果配置了 Prometheus)。你可以通过浏览器访问 http://localhost:8080/actuator/prometheus 来查看 Prometheus 格式的指标。

  2. Prometheus 中收集数据
    Prometheus 配置示例如下,假设你已经在 Prometheus 中设置了合适的抓取规则。

scrape_configs:- job_name: 'spring-boot-app'static_configs:- targets: ['localhost:8080']metrics_path: '/actuator/prometheus'

Prometheus 将会从 Spring Boot 应用中抓取指标数据。

  1. 可视化和分析
    你可以使用 Grafana 等工具,连接到 Prometheus 并创建仪表板来可视化这些度量数据。

  2. 其他常见度量
    除了计数器,还可以使用其他类型的指标,如:

Gauge:表示一个浮动值,比如当前的连接数。
Timer:用于度量时间的延迟,如 HTTP 请求的处理时间。
DistributionSummary:用于计算如请求大小等度量的分布情况。
示例:使用 Timer 记录方法执行时间

import io.micrometer.core.instrument.Timer;@Component
public class MyService {private final Timer timer;public MyService(MeterRegistry meterRegistry) {this.timer = meterRegistry.timer("method.execution.time");}public void execute() {timer.record(() -> {// 这里是你的业务逻辑try { Thread.sleep(1000); } catch (InterruptedException e) {}});}
}

通过这种方式,可以监控方法的执行时间。
使用 Micrometer 2.0 集成到 Spring Boot 3.4.x 中,可以轻松实现应用的性能监控。
配置合适的监控系统(如 Prometheus、Datadog 等),将性能指标导出。
通过定义合适的指标类型(计数器、计时器、仪表等),对应用的各项指标进行监控。
这种结合的优势在于它简化了监控的集成和管理,使得开发者可以更专注于业务逻辑,而不是复杂的监控代码。


http://www.ppmy.cn/server/160609.html

相关文章

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统&#xff08;mini system&#xff09;小型系统&#xff08;small system&#xff09;标准系统&#xff08;standard system&#xff09; 简介环境准备安装QE…

react19新API之use()用法总结

React use() Hook 使用指南 概述 use() 是 React 19 引入的新 Hook&#xff0c;它允许你在组件内部直接使用 Promise、Context 和其他可订阅的值。它是一个更通用的数据获取和订阅机制。 基本语法 const value use(resource);主要用途 1. Promise 处理 function UserDet…

Android开发,待办事项提醒App的设计与实现(个人中心页)

文章目录 1. 编写UI布局2. 实现逻辑3. 运行效果图3. 关于作者其它项目视频教程介绍 Android开发&#xff0c;待办事项提醒App的设计与实现&#xff1a; https://blog.csdn.net/jky_yihuangxing/article/details/145277956?spm1001.2014.3001.5501 1. 编写UI布局 fragment_mi…

Java后端Controller参数校验的一些干货及问题~

你们好,我是金金金。 场景 先看如下一张图,这是一个控制器里面的一个方法,第一眼是不是就感觉代码量非常多?而且随着参数越来越多 你则需要写n个if else来完成校验,属实是麻烦而且不够优雅 JSR303校验 仔细认真看,更容易理解吸收,想想什么层面需要做校验呢? 前端请求后…

【漫话机器学习系列】053.梯度爆炸(Exploding Gradient Problem)

梯度爆炸&#xff08;Exploding Gradient Problem&#xff09; 定义 梯度爆炸是指在深度神经网络的训练过程中&#xff0c;由于梯度的值在反向传播时不断累积&#xff0c;导致梯度变得非常大&#xff0c;以至于模型无法正常学习。这种现象在深层网络或循环神经网络&#xff0…

Hadoop集群搭建

1. 安装并配置虚拟机 这里基于VmWare来去构建三台虚拟机 我已经有了一台模板虚拟机&#xff0c;所以基于该模板虚拟机进行完整克隆得到三台机器&#xff0c;分别是hadoop1、hadoop2、hadoop3 修改主机名称 # hadoop1的主机名称修改为hadoop1&#xff0c;以此类推 vim /etc/ho…

4.C++中的循环语句

C中的循环语句 for 循环 for 循环是一种最常用的循环结构&#xff0c;通常用于已知循环次数的情况。 基本语法&#xff1a; for (初始化表达式; 条件表达式; 更新表达式) {// 循环体&#xff0c;当条件表达式为真时执行 }例如&#xff1a; #include <iostream> usin…

数据库存储上下标符号,sqlserver 2008r2,dm8

sqlserver 2008r2&#xff1a; 数据类型需要用nvarchar插入数据时字符串前需要用N create table test( col1 varchar(50), col2 nvarchar(50) ) insert into test(col1,col2) values(U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀,U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀) insert into…