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

ops/2025/1/23 17:10:38/

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/ops/152514.html

相关文章

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…

1.移动零

LeetCode 283. 移动零 1. 题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 注意&#xff1a;必须在 原地 对数组进行操作&#xff0c;不得额外分配新数组。 示例 示例 1: 输入: nums [0,1,0,3,1…

试题转excel;word转excel;大风车excel(1.1更新)

更新了大风车excel1.1版本 主要优化在算法层面&#xff1a; 1.0版本试题解析的成功率为95%&#xff0c;现在1.1版本已经优化到解析成功率为99% 一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几…

HippoRAG:受海马体启发的长时记忆模型,提升大语言模型的知识整合能力

论文地址&#xff1a;https://arxiv.org/pdf/2405.14831 1. 背景与挑战 1.1 哺乳动物大脑与长时记忆 进化优势: 哺乳动物的大脑进化出强大的长时记忆系统&#xff0c;能够存储大量关于世界的知识&#xff0c;并不断整合新信息&#xff0c;同时避免灾难性遗忘。知识整合能力: …

代码随想录day15

110. 知道平衡二叉树的概念即可。 /** lc appleetcode.cn id110 langcpp** [110] 平衡二叉树*/// lc codestart /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nul…

AI赋能前端性能工程:突破技术边界,迈向智能化开发

前端性能工程对于用户体验至关重要。一个加载缓慢、反应迟钝的网站会直接导致用户流失&#xff0c;影响业务转化率。然而&#xff0c;在快速迭代的现代前端开发中&#xff0c;我们常常面临着效率瓶颈&#xff1a;代码冗余、资源加载缓慢、渲染性能低下等问题层出不穷。传统的手…

青少年CTF练习平台 PHP的XXE

访问靶场是个phpinfo()页面 题目提示是PHP的XXE&#xff0c;访问simplexml_load_string.php文件 get请求是空白&#xff0c;要使用post方法请求 尝试读取文件,读取/etc/passwd文件 <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE xxe [ &l…

Qt调用ffmpeg库实时播放rtmp或rtsp视频流

参考链接 https://blog.csdn.net/u012532263/article/details/102736700