Prometheus + Grafana 搭建应用监控体系

在进行系统压测前,需要监控程序情况。今天实践了通过 Prometheus + Grafana 搭建应用监控体系,为后续使用 JMeter 对营销系统抽奖接口进行压测做准备。其中 Prometheus 主要负责指标数据的采集与存储,而 Grafana 则专注于数据的可视化展示。

一、应用端监控配置

首先需要在应用程序中集成监控采集能力,让 Spring Boot 应用能够暴露指标数据供 Prometheus 抓取。

1. 添加依赖

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>

2. 配置应用

application.yml 中启用监控端点:

复制代码
# 监控上报配置
management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露所有监控端点
  endpoint:
    health:
      show-details: always # 显示详细的健康检查信息
  metrics:
    export:
      prometheus:
        enabled: true # 启用Prometheus指标导出
  prometheus:
    enabled: true # 启用Prometheus专用端点

配置完成后,应用将在 /actuator/prometheus 路径暴露符合 Prometheus 格式的指标数据。

二、监控平台部署与配置

采用 Docker Compose 快速部署 Prometheus 和 Grafana,目录结构如下:

复制代码
data/
├─Grafana监控面板配置
│      New dashboard-1700969967327.json
│      README.md
│
└─monitor
    │  docker-compose.yml
    │
    └─etc
        ├─grafana
        │  └─provisioning
        │      └─datasources
        │              datasource.yml
        │
        └─prometheus
                prometheus.yml

1. Docker Compose 配置

yaml 复制代码
version: '3'
services:
  # 数据采集服务
  prometheus:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/prometheus:2.52.1
    container_name: prometheus
    restart: always
    ports:
      - 9090:9090
    volumes:
      - ./etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
  
  # 数据可视化服务
  grafana:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana:latest
    container_name: grafana
    restart: always
    ports:
      - 4000:4000
    depends_on:
      - prometheus
    volumes:
      - ./etc/grafana:/etc/grafana

2. Prometheus 抓取配置

prometheus.yml 中配置应用监控目标:

yaml 复制代码
global:
  scrape_interval: 15s  # 抓取间隔

scrape_configs:
  - job_name: 'yfj-dev-tech'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: [ '192.168.31.12:8091' ]  # 替换为实际应用地址

3. 验证连接

启动服务后访问 192.168.31.250:9090,在 Targets 页面看到状态为 UP 表示配置成功。此时 Prometheus 已开始采集应用的各种运行指标,包括 JVM 内存、线程状态、HTTP 请求等。如需监控 JMeter 本身的性能数据,可参考相关插件配置(后续可扩展)。

4. Grafana 可视化配置

访问 192.168.31.250:4000 进入 Grafana,配置数据源指向 Prometheus 后即可创建监控面板。通过导入 JSON 配置或使用 AI 辅助生成,可以快速搭建包含 Tomcat 线程数、数据库连接数、接口响应时间等关键指标的监控视图。

三、后续计划

至此,基础监控环境已搭建完成。下一步将基于此监控体系,使用 JMeter 对营销系统抽奖接口进行压测,通过实时监控指标变化来分析系统性能瓶颈,为优化提供数据支撑。

监控体系的建立不仅服务于本次压测,更为后续的系统稳定性保障和性能优化建立了可持续的观测能力。

相关推荐
AI老猿博士几秒前
SpringBoot自动配置揭秘
后端
程序员爱钓鱼2 分钟前
Go for 循环详解
后端·面试·go
程序员爱钓鱼2 分钟前
Rust impl详解:为Struct定义方法与关联函数
前端·后端·rust
weixin_4316004411 分钟前
NestJS 入门(9):连上数据库,SQL 写在哪?
数据库·后端·sql·学习·nest.js
Java成神之路-23 分钟前
Spring AI Alibaba 实现多轮对话记忆:ChatMemory 与 Redis 持久化实战
java·springaialibaba
qq_225891746625 分钟前
基于Flask的城市地铁客流量数据预测系统设计与实现
后端·python·flask
JAVA面经实录91726 分钟前
网络编程基础(Java Web/分布式前置·完整版)(十一)
java·前端·网络
IT_陈寒27 分钟前
搞不定JavaScript的数组去重?你可能漏了这两个坑
前端·人工智能·后端
Escalating_xu39 分钟前
【Linux】基础 I/O 深度解析:FILE、文件描述符、open/read/write、重定向与缓冲区
java·linux·服务器
城管不管42 分钟前
MySQL 慢查询完整排查
java·服务器·jvm·数据库·mysql·spring·面试