实战:micrometer+prometheus+grafana搭建Java程序的监控系统

    近期项目需要引入监控系统,一番折腾后搭建成功。这里总结一下搭建的过程。本文旨在引导整合并打通整个监控系统各个环节,适合新手及需求急切的开发者快速搭建监控系统的基础。

1、MicroMeter

    官网:micrometer

    micrometer号称监控界的SLF4J,主要用来以极低极低的消耗来给Java程序提供对指标的监控。

    micrometer支持接入多种数据库,这里我使用的是prometheus。

1、引入jar包:

    maven项目:

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <version>${micrometer.version}</version>
</dependency>

    gradle项目:

compile 'io.micrometer:micrometer-registry-prometheus:latest.release'

2、使用注册表

    注册表是用来管理一系列指标的工具,尤其在micrometer-prometheus的项目,PrometheusMeterRegistry的scrape()方法已经封装好了生成给prometheus传递的信息的代码,我们只需要在servlet中调用该方法响应prometheus的抓取即可。

    1

<think>我们创建一个完整的Spring Boot项目,集成JVM监控Druid数据库连接池、PrometheusGrafana。以下是详细步骤: ### 1. 创建Spring Boot项目 使用Spring Initializr(https://start.spring.io/)创建项目,选择以下依赖: - Spring Web - Spring Boot Actuator - Spring Data JPA (或其他数据库访问方式,按需选择) - Druid (需要手动添加依赖) - Micrometer Registry Prometheus ### 2. 添加Druid依赖 在`pom.xml`中添加Druid的Spring Boot Starter依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> <!-- 使用最新版本 --> </dependency> ``` ### 3. 配置Druid数据源 在`application.yml`中配置数据源和Druid监控: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 20 # 其他Druid配置... # Druid监控页面配置 druid: stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: admin ``` ### 4. 添加Prometheus支持 由于在创建项目时已经选择了`Micrometer Registry Prometheus`,所以只需要在`application.yml`中开启Actuator的端点: ```yaml management: endpoints: web: exposure: include: health,info,metrics,prometheus metrics: tags: application: ${spring.application.name} ``` ### 5. 创建示例Controller 创建一个简单的REST控制器用于测试: ```java @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } } ``` ### 6. 配置Prometheus 在服务器上安装Prometheus,并修改`prometheus.yml`配置文件,添加对Spring Boot应用的监控: ```yaml scrape_configs: - job_name: 'spring-boot-app' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:8080'] # 替换为你的应用地址 ``` ### 7. 配置Grafana 1. 安装Grafana。 2. 添加Prometheus数据源,URL为Prometheus的地址(如:`http://localhost:9090`)。 3. 导入JVM监控仪表盘: - 使用Micrometer提供的仪表盘:https://grafana.com/grafana/dashboards/4701 - 在Grafana中导入这个仪表盘(ID:4701)即可。 ### 8. 运行项目并验证 1. 启动Spring Boot应用。 2. 访问`http://localhost:8080/hello`,确认应用运行。 3. 访问`http://localhost:8080/actuator/prometheus`,查看监控数据。 4. 访问`http://localhost:8080/druid`,登录后查看Druid监控页面。 5. 在Grafana中查看JVM监控仪表盘。 ### 9. 项目结构 完整的项目结构如下: ``` src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── demo │ │ ├── DemoApplication.java │ │ ├── controller │ │ │ └── HelloController.java │ │ └── config │ │ └── DruidConfig.java (可选,如果需要自定义配置) │ └── resources │ ├── application.yml │ └── static └── test └── java └── com └── example └── demo ``` ### 注意事项 - 确保所有服务(应用、PrometheusGrafana)的网络互通。 - 根据实际情况调整配置(如数据库连接、端口等)。 - 生产环境需要加强安全配置(如Actuator端点的安全访问)。 通过以上步骤,我们就创建了一个集成了Spring Boot、JVM监控DruidPrometheusGrafana的完整项目。 §§相关问题§§ 1. 如何为Spring Boot Actuator端点添加安全认证? 2. Druid监控页面有哪些功能? 3. Grafana中如何自定义监控面板? 4. Prometheus抓取数据失败可能的原因有哪些?</think>### 创建 Spring Boot + JVM监控 + Druid + Prometheus + Grafana 完整项目指南 #### 1. 创建基础Spring Boot项目 使用 [Spring Initializr](https://start.spring.io/) 生成项目,选择以下依赖: - Spring Web - Spring Boot Actuator - Spring Data JPA(或其他数据库访问技术) ```xml <!-- pom.xml 添加关键依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> ``` #### 2. 配置Druid数据源 ```yaml # application.yml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/db username: root password: 123456 druid: initial-size: 5 min-idle: 5 max-active: 20 stat-view-servlet: enabled: true url-pattern: /druid/* ``` #### 3. 配置Prometheus端点 ```yaml management: endpoints: web: exposure: include: health,info,prometheus metrics: tags: application: ${spring.application.name} ``` #### 4. 添加JVM监控支持 ```java // 主应用类添加 @Bean public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() { return registry -> registry.config().commonTags("application", "monitoring-demo"); } ``` #### 5. 配置Prometheus(服务器端) ```yaml # prometheus.yml 配置 scrape_configs: - job_name: 'spring-boot-app' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:8080'] # 应用地址 ``` #### 6. 配置Grafana仪表盘 1. 添加数据源:选择Prometheus,URL: `http://localhost:9090` 2. 导入仪表盘模板: - JVM监控:使用ID `4701` - Spring Boot监控:使用ID `6756` - Druid监控:自定义SQL查询 #### 7. 完整项目结构 ``` src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── demo/ │ │ ├── Application.java │ │ ├── config/ │ │ ├── controller/ │ │ └── service/ │ └── resources/ │ ├── application.yml │ └── static/ docker/ ├── prometheus/ │ └── prometheus.yml ├── grafana/ │ └── provisioning/ docker-compose.yml ``` #### 8. Docker集成配置 ```yaml # docker-compose.yml version: '3' services: app: build: . ports: - "8080:8080" prometheus: image: prom/prometheus volumes: - ./prometheus:/etc/prometheus ports: - "9090:9090" grafana: image: grafana/grafana ports: - "3000:3000" ``` #### 9. 验证监控 1. 访问 `http://localhost:8080/actuator/prometheus` 查看原始数据 2. Druid监控: `http://localhost:8080/druid` 3. Grafana仪表盘: `http://localhost:3000` > 提示:生产环境需添加安全控制,使用Spring Security保护Actuator端点[^2][^4]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值