当前位置: 首页 > web >正文

Spring Boot Admin监控

1、概述

        Spring Boot Admin 是一款用于监控 Spring Boot 应用程序的开源工具,可帮助开发者实时监控应用的运行状态、性能指标、日志信息等。

2、核心功能

应用状态监控

  • 显示应用是否在线、启动时间、运行时长等基础信息。
  • 监控 JVM 相关指标:内存使用情况(堆内存、非堆内存)、线程状态(活跃线程数、峰值线程数)、类加载数量等。
  • 查看 CPU 使用率、垃圾回收(GC)频率及耗时。

应用详情查看

  • 展示应用的配置属性(如 application.properties 中的参数)。
  • 查看 HTTP 端点(Endpoints)信息,如健康检查(/health)、环境变量(/env)、日志级别(/loggers)等。

日志管理

  • 实时查看和修改应用的日志级别(如 DEBUG、INFO、WARN)。
  • 支持按条件过滤日志内容。

告警与通知

  • 结合第三方工具(如 Email、Slack、钉钉等)实现告警通知,当应用状态异常或指标超出阈值时触发提醒。

批量监控

  • 支持同时监控多个 Spring Boot 应用,通过统一的 Web 界面集中管理。

3、搭建监控系统

配置监控端(Admin Server)

添加依赖

在 pom.xml 中引入 Spring Boot Admin Server:

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>

启用 Admin Server

在主类上添加 @EnableAdminServer 注解:

package com.ybw;import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 启动类** @author ybw* @version V1.0* @className SpringAdminServerDemoApplication* @date 2025/6/9**/
@SpringBootApplication
@EnableAdminServer
public class SpringAdminServerDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringAdminServerDemoApplication.class, args);}}

配置端口和安全(可选)

server.port=9090  # 监控端端口
spring.security.user.name=admin  # 认证用户名
spring.security.user.password=123456  # 认证密码

配置被监控应用(Admin Client)

添加依赖

在被监控应用的 pom.xml 中引入 Spring Boot Admin Client:

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

配置监控端地址

在被监控应用的 application.properties 中指定监控端的 URL:

spring.boot.admin.client.url=http://localhost:9090  # 监控端地址
management.endpoints.web.exposure.include=*  # 暴露所有监控端点

启动并访问监控界面

        先启动监控端(Admin Server),访问 http://localhost:9090,输入认证信息(若配置了安全策略)。

4、扩展功能与最佳实践 

自定义监控指标

        通过 Spring Boot 的 Micrometer 框架添加自定义指标(如数据库连接数、业务接口响应时间):

import io.micrometer.core.annotation.Timed;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class CustomMetricsController {@Timed(value = "api.request.time", description = "请求处理耗时")@GetMapping("/custom-api")public String customApi() {// 业务逻辑return "Hello, Admin!";}
}
  • 写在被监控端:admin client。 

告警集成

        使用 Spring Boot Admin 的 Notifier 接口集成告警服务,例如通过邮件通知:

import de.codecentric.boot.admin.server.notify.AbstractEventNotifier;
import de.codecentric.boot.admin.server.notify.StatusChangeEvent;
import org.springframework.stereotype.Component;@Component
public class EmailNotifier extends AbstractEventNotifier {@Overrideprotected void doNotify(StatusChangeEvent event) {// 发送邮件逻辑(调用邮件服务 API)String message = String.format("应用 %s 状态变更为 %s", event.getApplication().getName(), event.getStatusInfo());sendEmail("admin@example.com", "Spring Boot Admin 告警", message);}private void sendEmail(String to, String subject, String content) {// 具体邮件发送实现}
}
  • 写在监控端:admin server。
  • 触发条件:基于状态变化触发,默认情况下,Spring Boot Admin 会在应用状态发生变化时触发告警(如 UP → DOWNOFFLINE → UP 等)。常见状态如下:
    • UP:应用正常运行
    • DOWN:应用健康检查失败
    • OFFLINE:应用注册后断开连接
    • UNKNOWN:状态未知

5、常用端点(Endpoints)

        Spring Boot Admin 通过访问应用的监控端点获取数据,常用端点如下:

端点路径描述
/health健康检查状态(是否存活)
/info应用信息(如版本、构建时间)
/metrics指标数据(JVM、CPU、自定义指标)
/loggers日志级别管理
/env环境变量和配置属性
/threaddump线程 dump 信息

6、持久化 

默认内存存储(无持久化)

Spring Boot Admin 默认使用内存存储监控数据,这意味着:

  1. 数据生命周期:监控数据仅在 Admin Server 运行期间有效,重启后数据丢失。
  2. 短期数据:默认只保留最近的状态变化和指标,例如:
    • 应用状态(UP/DOWN):仅保留最新状态。
    • 指标数据(堆内存、线程数):仅保留最近几次采样值(通常为几分钟内)。
http://www.xdnf.cn/news/13064.html

相关文章:

  • 2025.6.9总结(利与弊)
  • MyBatis————进阶
  • 「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
  • JS - 函数防抖详解
  • React 第五十八节 Router中StaticRouterProvider的使用详解及案例
  • 如何在服务器上部署 Python Django 应用
  • 打开网页即可远程控制手机,Linux系统亦可使用
  • c++学习之路1-安装部署opencv环境c++版本用visual studio
  • C#模式匹配深度解析与最佳实践
  • day49python打卡
  • MYSQL数据库
  • LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 下
  • VSCode 使用CMake 构建 Qt 5 窗口程序
  • 【C++特殊工具与技术】优化内存分配(四):定位new表达式、类特定的new、delete表达式
  • [论文阅读]人工智能 | CoMemo:给大视觉语言模型装个“图像记忆”
  • (37)课56--??:建立保存点 SAVEPOINT spA,回滚(至保存点) ROLLBACK (to spA)及综合举例。
  • 记录:RK3588 PWM调试
  • Unity UGUI Button事件流程
  • AlgorithmVisualizer项目改进与部署-网页算法可视化
  • 【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
  • ConcurrentModificationException 并发修改异常详解
  • 用递归算法解锁「子集」问题 —— LeetCode 78题解析
  • 代码随想录算法训练营第60期第六十三天打卡
  • 华硕a豆14 Air香氛版,美学与科技的馨香融合
  • vue+cesium示例:3D热力图(附源码下载)
  • pycharm 设置环境出错
  • matlab时序预测并绘制预测值和真实值对比曲线
  • 浏览器指纹科普 | Do Not Track 是什么?
  • 2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
  • (14)-java+ selenium->元素定位大法之By xpath上卷