使用 Grafana 监控 Spring Boot 应用

news/2025/2/23 22:51:48

随着软件开发领域的不断发展,监控和可观测性已成为确保系统可靠性和性能的关键实践。Grafana 是一个功能强大的开源工具,能够为来自各种来源的监控数据提供丰富的可视化功能。在本篇博客中,我们将探讨如何将 Grafana 与 Spring Boot 应用程序集成,以创建一个能够跟踪重要应用指标的监控系统。

为什么选择 Grafana 进行监控?

Grafana 在以下方面表现出色:

  • • 可视化:Grafana 提供了多种可视化图表,如图形、热图和仪表盘。

  • • 告警:基于收集的指标设置告警,帮助您在问题升级之前发现它们。

  • • 自定义仪表盘:构建自定义仪表盘,实时跟踪应用程序的健康状态。

通过将 Grafana 与 Spring Boot 应用程序结合,您可以跟踪性能指标,如内存使用率、CPU 负载、响应时间以及其他自定义指标。

先决条件

在深入探讨如何将 Grafana 与 Spring Boot 集成之前,请确保已设置以下内容:

  1. 1. Spring Boot 应用程序(版本 2.5 或更高)。

  2. 2. Prometheus 用于指标收集。

  3. 3. Grafana 已安装(可以通过 Docker 或直接在机器上安装)。

步骤 1:在 Spring Boot 中添加依赖项

首先,我们需要配置 Spring Boot 应用程序以暴露指标。这是通过 Micrometer 库实现的,该库与 Spring Boot 集成。Prometheus 将收集这些指标,然后可以在 Grafana 中进行可视化。

在 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • • Micrometer 是指标收集库,Prometheus 注册表帮助收集和存储指标。

  • • Actuator 提供了生产就绪的端点,如 /metrics,用于暴露应用程序指标。

步骤 2:在 Spring Boot 中暴露指标

通过在 application.properties 或 application.yml 文件中添加以下属性,启用 Spring Boot 的指标端点:

management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
management.endpoint.metrics.enabled=true

这将允许 /actuator/prometheus 端点以 Prometheus 可以抓取的格式暴露指标。

步骤 3:配置 Prometheus

接下来,您需要配置 Prometheus 以从 Spring Boot 应用程序中抓取指标。如果尚未安装 Prometheus,可以通过 Docker 或直接下载安装。您可以使用以下 prometheus.yml 配置文件从 Spring Boot 应用程序中抓取指标:

global:
  scrape_interval: 15s # Prometheus 抓取指标的频率。

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

在此配置中:

  • • scrape_interval 定义了 Prometheus 抓取指标的频率。

  • • metrics_path 是 Spring Boot Actuator 暴露指标的端点。

  • • targets 定义了 Prometheus 可以找到 Spring Boot 应用程序的位置(在本例中为 localhost:8080)。

配置完成后,通过以下命令启动 Prometheus:

./prometheus --config.file=prometheus.yml

现在,您应该可以在 http://localhost:9090 访问 Prometheus,并验证它是否正在从 Spring Boot 应用程序中抓取指标。

步骤 4:设置 Grafana

现在 Prometheus 正在收集您的指标,我们可以设置 Grafana 来可视化这些指标。

1. 安装 Grafana:如果尚未安装,可以通过以下 Docker 命令运行 Grafana:

docker run -d -p 3000:3000 grafana/grafana

2. 添加 Prometheus 作为数据源

  • • 访问 http://localhost:3000 进入 Grafana UI。

  • • 使用默认凭据(admin/admin)登录。

  • • 在 Configuration 菜单下,选择 Data Sources,并添加 Prometheus 作为数据源,URL 为 http://localhost:9090

3. 创建仪表盘

  • • 添加数据源后,创建一个新的仪表盘。

  • • 您可以通过查询 Prometheus 指标来向仪表盘添加面板。例如,要监控 JVM 内存使用情况,可以使用查询 jvm_memory_used_bytes

步骤 5:可视化指标

Grafana 允许您创建自定义可视化图表。以下是一些常见指标的监控示例:

内存使用情况

jvm_memory_used_bytes

CPU 负载

system_cpu_usage

HTTP 请求

http_server_requests_seconds_count

添加面板后,您将拥有一个功能齐全的仪表盘,能够实时可视化 Spring Boot 应用程序的指标。

步骤 6:设置告警(可选)

Grafana 的告警系统允许您根据收集的指标配置告警。您可以创建一个告警,当应用程序的内存使用率超过某个阈值时通知您。

  1. 1. 在仪表盘中,点击面板并选择 Edit

  2. 2. 在 Alert 选项卡下,配置您的告警条件。

  3. 3. 设置通知渠道,如电子邮件或 Slack,以便发送告警。

结论

将 Grafana 与 Spring Boot 应用程序集成,为监控和可视化应用程序性能提供了一个强大的解决方案。通过使用 Prometheus 收集指标并在 Grafana 中进行可视化,您可以确保系统健康,并快速解决出现的问题。通过此设置,您将拥有一个强大的可观测性堆栈,能够随着 Spring Boot 应用程序的扩展而扩展,确保性能优化和主动监控。


http://www.niftyadmin.cn/n/5863841.html

相关文章

LeetCode 热题 100 73. 矩阵置零

LeetCode 热题 100 | 73. 矩阵置零 大家好&#xff0c;今天我们来解决一道经典的算法题——矩阵置零。这道题在LeetCode上被标记为中等难度&#xff0c;要求我们将矩阵中为0的元素所在的行和列全部置为0。下面我将分别给出非原地算法和原地算法的Python代码实现&#xff0c;并…

共筑金融数字化新生态!YashanDB与恒生电子完成兼容互认证

近日&#xff0c;深圳计算科学研究院的崖山数据库系统YashanDB与恒生电子股份有限公司HUNDSUN资产估值与会计核算软件V6.0成功完成了兼容性互认证。结果显示&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;可共同为银行、证券、基金、保险、信托等金融机构提供稳…

21.《SpringBoot 异步编程@Async与CompletableFuture》

SpringBoot 异步编程 文章导读 本文系统讲解 Spring Boot 异步编程的核心技术与实践方案&#xff0c;涵盖从基础使用到高级优化的全链路知识。通过深入剖析 Async 注解原理、线程池配置策略、异步异常处理机制等关键技术点&#xff0c;结合典型业务场景的代码示例&#xff0c…

【网络安全 | 漏洞挖掘】账户接管+PII+原漏洞绕过

文章目录 前言正文前言 本文涉及的所有漏洞测试共耗时约三周,成果如下: 访问管理面板,成功接管目标列出的3000多家公司。 获取所有员工的真实指纹、机密文件及个人身份信息(PII)。 绕过KYC认证,成功接管电话号码。 绕过此前发现的漏洞。 正文 在测试目标时,我发现了一…

chrome扩展程序如何实现国际化

先来看一个 manifest.json 文件的内容例子&#xff1a; { "update_url": "https://clients2.google.com/service/update2/crx ","default_locale": "en","name": "__MSG_appName__","short_name": &q…

lattice hdl实现spi接口

在lattice工具链中实现SPI接口通常涉及以下步骤: 定义硬件SPI接口的管脚。配置SPI时钟和模式。编写SPI主机或从机的控制逻辑。 展示了如何在Lattice工具链中使用HDL语言(例如Verilog)来配置SPI接口: lattice工程 顶层:spi_slave_top.v `timescale 1ns/ 1ps module spi_…

浅识Linux的DMA拷贝、MMAP映射与sendfile原理

Linux的DMA拷贝、MMAP映射与sendfile原理详解 1. DMA拷贝&#xff08;Direct Memory Access&#xff09; 原理&#xff1a; DMA&#xff08;直接内存访问&#xff09;是一种硬件机制&#xff0c;允许外设&#xff08;如网卡、磁盘控制器&#xff09;直接与内存交互&#xff0c…

Android studio如何把新项目上传到svn仓库

原文链接&#xff1a;1、Android studio svn上传新项目&#xff0c;2、Android Studio向SVN上传新项目 我在android studio上创建新项目&#xff0c;这项目名&#xff1a;MyApplication6 先看一下&#xff1a;TortoiseSVN\bin下的没有svn.exe的解决问题&#xff0c;把svn.ex…