Spring Boot Admin应用

1. 简介

Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控Spring Boot应用程序。它主要由两个部分构成:服务端(server)和客户端(client)。以下是对Spring Boot Admin的主要功能和特点的解释:

  1. 监控和管理界面

    1. Spring Boot Admin提供了一个基于Web的用户界面,用于展示和管理Spring Boot应用程序的运行状态。
  2. 集成Spring Boot Actuator

    1. 它利用Spring Boot Actuator提供的端点信息,以图形化的方式展示应用的健康状态、指标、配置等。
  3. 功能特性

    1. 显示健康状态及详细信息,如JVM和内存指标、数据源指标、缓存指标。

    2. 跟踪并下载日志文件。

    3. 查看JVM系统和环境属性。

    4. 查看Spring启动配置属性。

    5. 方便的日志级别管理。

    6. 查看线程转储。

    7. 视图HTTP traces。

    8. 查看HTTP端点。

    9. 查看计划任务。

    10. 查看和删除活动会话(使用spring-session)。

    11. 状态更改通知(通过电子邮件、Slack、Hipchat等)。

    12. 状态变化的事件日志(非持久性)。

  4. 服务端和客户端

    1. 服务端提供用户界面,展示和交互Spring Boot Actuators。

    2. 客户端用于在服务端注册,并允许访问Actuator端点。

  5. 快速开始

    1. 要使用Spring Boot Admin,首先需要设置一个Spring Boot应用。服务端可以作为servlet或webflux应用程序运行,需要添加相应的Spring Boot Starter。
  6. 注册客户端应用

    1. 每个想要注册的应用都需要包含Spring Boot Admin Client。为了保护端点,还需要添加spring-boot-starter-security
  7. 版本兼容性

    1. Spring Boot Admin 2.0版本已经全面支持Spring Boot 2.x版本,能够很好地与Spring Boot 2.x集成的微服务架构协同工作。
  8. UI 改进

    1. 新的UI界面更加简洁美观,提供了更多的信息展示和交互功能。
  9. 健康信息增强

    1. 支持更详细的健康检查信息,包括磁盘空间、数据库连接、缓存统计等。
  10. 事件通知

    1. Spring Boot Admin 2.0支持通过邮件、Slack等方式发送事件通知,帮助开发者及时获取应用状态变化信息。

2. 实例

2.1 服务端(server)

添加依赖

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.7.12</version>
</dependency>
<!-- spring-boot-admin-starter-client -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.7.12</version>
</dependency>

启动类需要添加@EnableAdminServer 注解

java 复制代码
@SpringBootApplication
@EnableAdminServer
public class AdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}

application.yml

XML 复制代码
server:
  port: 9001 # UI端口,注册端口

接下来启动服务器(需要先启动)

2.2 客户端(client)

2.2.1 Client 1

2.2.1.1 添加依赖
XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.7.12</version>
</dependency>
<!-- spring-boot-admin-starter-client -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.7.12</version>
</dependency>
  • Spring Boot Actuator的启动器,它提供了生产环境下监控和管理Spring Boot应用的功能。Actuator允许你监控应用的健康状态、度量信息、环境配置、HTTP追踪、线程转储等。

  • Spring Boot Admin的客户端启动器,用于将Spring Boot应用注册为Spring Boot Admin服务器的客户端。当你的应用包含了这个依赖后,它会自动连接到配置的Spring Boot Admin服务器,并将自己注册为一个可管理的客户端。这样,Spring Boot Admin服务器就能够收集来自这个客户端应用的监控数据,包括Actuator暴露的所有端点信息。客户端应用可以通过这些数据被监控和管理,例如查看健康状态、查看日志、管理配置等。

2.2.1.2 application.yml
XML 复制代码
server:
  port: 1111

# actuator 开启全部端点
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      enabled: true
      
# 注册到 spring-boot-admin-server
spring:
  boot:
    admin:
      client:
        url: http://localhost:9001
  • 自定义该程序的端口

  • 开启actuator端点

  • 客户端注册到server

2.2.1.3 启动客户端

2.2.2 Client 2

2.2.2.1 添加依赖
XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- spring-boot-admin-starter-client -->
<!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-client -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.4.2</version>
</dependency>

可以看到client依赖的版本与上一个不同,因为所使用的Spring start依赖是不同的,用上一个应用的依赖版本,这个客户端注册不到服务中。

2.2.2.2 application.yml
XML 复制代码
# actuator 开启全部端点
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      enabled: true
spring
  boot:
    admin:
      client:
        url: http://localhost:9001
2.2.2.3 启动客户端

2.3 测试

2.3.1 控制台
XML 复制代码
d.c.b.a.server.services.StatusUpdater    : Couldn't retrieve status for Instance(id=a80586157
4b2, version=3, registration=Registration(name=spring-boot-application, managementUrl=http://
192.168.6.14:1111/actuator, healthUrl=http://192.168.6.14:1111/actuator/health, serviceUrl=
http://192.168.6.14:1111/, source=http-api), registered=true, statusInfo=StatusInfo(status=
UP, details={}), statusTimestamp=2024-10-31T01:20:31.793Z, info=Info(values={}),

当客户端启动后,在服务器应用的控制台会打印出上述信息,代表客户端已经注册

2.3.2 Server UI

访问http://localhost:9001(服务端的启动地址)

两个客户端都注册到了服务器

点击应用墙,进入具体客户端实例,查看相关信息

其他的留给同学们一起探索!!!

不积跬步,无以至千里 --- xiaokai

相关推荐
朝新_1 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir1 小时前
Calendar类日期设置进位问题
java·开发语言
XMYX-02 小时前
Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)
spring boot·后端·prometheus
季鸢3 小时前
Java设计模式之状态模式详解
java·设计模式·状态模式
@yanyu6664 小时前
springboot实现查询学生
java·spring boot·后端
ascarl20104 小时前
准确--k8s cgroup问题排查
java·开发语言
magic 2454 小时前
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
java
爱敲代码的憨仔4 小时前
分布式协同自动化办公系统-工作流引擎-流程设计
java·flowable·oa
酷爱码4 小时前
Spring Boot项目中JSON解析库的深度解析与应用实践
spring boot·后端·json
纪元A梦4 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法