🎓博主介绍:Java、Python、js全栈开发 “多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。
📖DeepSeek-行业融合之万象视界(附实战案例详解100+)
📖全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)
👉感兴趣的可以先收藏起来,希望帮助更多的人
在这里插入图片描述

SpringBoot监控体系搭建:Prometheus+Grafana可视化监控

一、背景与意义

在当今的软件开发领域,Spring Boot 凭借其便捷的开发特性和高效的性能,成为了构建微服务架构的热门选择。然而,随着系统规模的不断扩大和业务逻辑的日益复杂,对系统进行实时监控变得至关重要。通过有效的监控,我们可以及时发现系统中的性能瓶颈、故障隐患,从而保障系统的稳定运行。

Prometheus 是一款开源的监控系统,它具有强大的数据采集和存储能力,采用了基于时间序列的数据模型,支持灵活的查询和告警机制。Grafana 则是一款优秀的可视化工具,它可以与 Prometheus 无缝集成,将采集到的数据以直观的图表和仪表盘的形式展示出来,帮助技术人员快速理解系统的运行状态。

二、环境准备

2.1 安装 JDK

确保系统中已经安装了 JDK 8 或更高版本,你可以通过以下命令检查 JDK 版本:

java -version

如果未安装,可以从 Oracle 官网或 OpenJDK 官网下载适合你系统的 JDK 版本,并按照安装向导进行安装。

2.2 安装 Docker

为了方便部署 Prometheus 和 Grafana,我们使用 Docker 进行容器化部署。根据你的操作系统,从 Docker 官网下载并安装 Docker。安装完成后,通过以下命令验证 Docker 是否安装成功:

docker --version

2.3 创建 Spring Boot 项目

使用 Spring Initializr(https://start.spring.io/)创建一个新的 Spring Boot 项目,添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
</dependencies>

三、Spring Boot 集成 Prometheus

3.1 配置 Micrometer

application.propertiesapplication.yml 中添加以下配置:

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

这将启用 Prometheus 端点,并允许 Micrometer 将指标数据暴露给 Prometheus。

3.2 编写示例代码

创建一个简单的 Spring Boot 控制器:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

启动 Spring Boot 应用程序,访问 http://localhost:8080/actuator/prometheus,你将看到 Prometheus 格式的指标数据。

四、Prometheus 部署与配置

4.1 下载并启动 Prometheus 容器

使用以下命令下载并启动 Prometheus 容器:

docker run -d -p 9090:9090 --name prometheus prom/prometheus

4.2 配置 Prometheus

创建一个 prometheus.yml 配置文件:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['host.docker.internal:8080']

host.docker.internal 替换为你的 Spring Boot 应用程序的实际 IP 地址。

将配置文件挂载到 Prometheus 容器中:

docker run -d -p 9090:9090 --name prometheus -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

4.3 验证 Prometheus 配置

访问 http://localhost:9090,你将看到 Prometheus 的控制台。在查询框中输入 up,如果看到 Spring Boot 应用程序的指标数据,则说明配置成功。

五、Grafana 部署与配置

5.1 下载并启动 Grafana 容器

使用以下命令下载并启动 Grafana 容器:

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

5.2 配置 Grafana

访问 http://localhost:3000,使用默认用户名 admin 和密码 admin 登录 Grafana。

添加 Prometheus 数据源:

  1. 点击左侧菜单中的 “Configuration” -> “Data Sources”。
  2. 点击 “Add data source”,选择 “Prometheus”。
  3. 在 “URL” 字段中输入 http://host.docker.internal:9090,将 host.docker.internal 替换为你的 Prometheus 容器的实际 IP 地址。
  4. 点击 “Save & Test”,如果测试成功,则说明数据源配置成功。

5.3 创建仪表盘

  1. 点击左侧菜单中的 “Create” -> “Dashboard”。
  2. 点击 “Add a new panel”。
  3. 在 “Query” 选项卡中,选择 Prometheus 数据源,并输入查询语句,例如 http_server_requests_seconds_count
  4. 在 “Visualization” 选项卡中,选择合适的图表类型,如柱状图、折线图等。
  5. 点击 “Apply”,保存面板配置。

六、监控指标分析与优化

6.1 常见监控指标

  • CPU 使用率:反映系统 CPU 的使用情况,过高的 CPU 使用率可能导致系统响应变慢。
  • 内存使用率:监控系统内存的使用情况,防止内存泄漏和内存溢出。
  • 请求响应时间:衡量系统处理请求的性能,过长的响应时间可能影响用户体验。

6.2 指标分析与优化

通过 Grafana 仪表盘观察监控指标的变化趋势,当发现异常指标时,及时进行分析和优化。例如,如果发现 CPU 使用率过高,可以检查代码中是否存在高 CPU 消耗的操作,如死循环、大量的递归调用等。

七、总结

通过搭建 Spring Boot 监控体系,使用 Prometheus 进行数据采集和存储,Grafana 进行可视化展示,我们可以实时监控系统的运行状态,及时发现和解决问题,保障系统的稳定运行。同时,我们还可以根据监控指标进行性能优化,提高系统的性能和用户体验。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐