actuator+admin/prometheus+grafana监控web应用+mysql数据库

介绍

  • Actuator Spring Boot提供的一个功能强大的管理和监控工具.可以提供对应用程序的运行时信息、健康状况、性能指标、日志等进行监控和管理。

#Spring Boot 2.0的端点基础路径由“/”调整到”/actuator”下,如:/info调整为/actuator/info
/actuator/info 端点获取应用程序的自定义信息,例如版本号、构建信息等。
/actuator/threaddump端点获取应用程序当前的线程信息。
/actuator/metrics/memory.used端点获取应用程序当前的内存使用情况。
actuator/loggers端点获取和修改应用程序的日志级别。
/actuator/health:健康检查端点
/actuator/env:环境信息端点
/actuator/prometheus:暴露给 Prometheus 的监控数据端点

  • Prometheus 是一个开源的监控系统和时间序列数据库,由 SoundCloud 开发并于 2016 年开源。它以其高效的数据抓取和存储能力而闻名,能够实时监控和报警,帮助开发人员及时发现和解决系统问题。
  • Grafana 是一个开源的度量分析和可视化套件,可以与 Prometheus 无缝集成,生成直观的图表和仪表盘。

Actuator+Admin

SpringBoot Admin是一个在github上开源的社区项目,通过使用Actuator暴漏的端点来是实现项目的可视化监控和管理,可以作为中小公司健康监控系统的使用是没有太大问题的。
admin访问权限问题可以通过 security控制 参考:https://gitee.com/wenwang2000/com-spring-cloud-v2.git#com-spring-cloud-admin

###Admin服务端
maven

 <!--admin服务端 版本要和客户端一致-->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>x.x.x</version>
		</dependency>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-server-ui</artifactId>
			<version>x.x.x</version>
		</dependency>

启动类增加

@EnableAdminServer

###Actuator接入
maven

	<!--admin-client 版本要和客户端一致-->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>x.x.x</version>
		</dependency>

配置


spring:
  application:
    name: Actuator
  # 指定admin-server的地址
  boot:
    admin:
      client:
        url: http://localhost:80

登录admin
在这里插入图片描述
查看服务详情
在这里插入图片描述

Actuator+Prometheus

如果公司有相关资源可以采用该方案

maven

<!--actuator-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!--这个依赖可以实现将actuator的数据转换成Prometheus可以识别的数据类型-->
		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-registry-prometheus</artifactId>
			<version>1.1.3</version>
		</dependency>
		<!--aspectj-->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.13</version>
		</dependency>

项目配置

management:
  endpoints:
    web:
      exposure:
        include: health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics
  endpoint:
    #健康检查
    health:
      #总是展示健康检查的详细信息
      show-details: always
    #启用之后,才能够正常调用  /actuator/prometheus 接口
    prometheus:
      enabled: true
  metrics:
    prometheus:
        enabled: true
    tags:
      enabled: true
      #应用程序名称,这个配置建议加上,Grafana官方提供的面板配置很多用了这个label
      application: ${spring.application.name}
#自定义  actuator 监控信息
info:
  app:
    name: "@project.name@" #从pom.xml中获取
    version: "@project.version@"

启动服务后访问:http://localhost:8080/actuator/prometheus 查看效果

Prometheus 采集服务数据

1、下载 https://prometheus.io/ 安装
2、核心的三个配置如下图
3、启动服务访问 http://127.0.0.1:9090/

在这里插入图片描述

效果如下:
在这里插入图片描述

Grafana可视化

1、下载 https://grafana.com/grafana/download
2、安装启动 http://localhost:3000/ 默认密码 admin/admin 首次登记需要修改

配置数据源

connections => datasources=>添加一个新的数据源
在这里插入图片描述
选择prometheus
在这里插入图片描述
配置服务地址
在这里插入图片描述

创建仪表盘

https://grafana.com/grafana/dashboards 查找需要的模版
在这里插入图片描述
下载模版json文件(点击进去)
在这里插入图片描述

Dashboard ==》Create Dashboard
在这里插入图片描述
上传下载的json文件
在这里插入图片描述
修改下名称+选择数据源
在这里插入图片描述
查看效果
在这里插入图片描述

监控mysql

安装 MySQL Exporter

https://github.com/prometheus/mysqld_exporter

配置MySQL Exporter

在 mysqld_exporter 目录中,创建一个配置文件 config.my.cnf

[client]
host=localhost
port=3306
user=your_mysql_user
password=your_mysql_password

运行 exporter

# --web.listen-address=":9104" 指定端口
./mysqld_exporter --config.my-cnf="config.my.cnf"

配置Prometheus

scrape_configs:
  - job_name: 'mysql'
    static_configs:
      - targets: ['localhost:9104']  # 确保这里的端口与 mysqld_exporter 的端口一致

选择模版
在这里插入图片描述
工程代码参考:https://gitee.com/wenwang2000/com-spring-cloud-v2.git

<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监控、Druid、PrometheusGrafana的完整项目。 §§相关问题§§ 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]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值