Spring Boot Admin 横空出世!

简介: Spring Boot Admin 横空出世!

前言

哈哈,略标题党,其实 Spring Boot Admin 这个项目已经开源好些年了,栈长看了下:

image.png

有记录的最早版本是在 2014 年,和 Spring Boot 在同一年相继开源:

https://github.com/codecentric/spring-boot-admin

Github 超过 10k+ 的关注量,不可谓不火爆。。


可能还有一些小伙伴还没用过:

  • 它到底是个什么项目?
  • 它都有什么用处?
  • 和 Spring Boot 又有什么关系呢?

本文栈长带你解开这些谜团。。


Spring Boot Admin

简介

Spring Boot Admin = Spring Boot + Admin,用于管理和监控 Spring Boot 应用程序,它并不是 Spring Boot 官方提供的,而是某个社区开源的。


主要功能如下:

  • 显示健康状况
  • 显示详细指标(如:jvm、内存,micrometer、数据源、缓存等)
  • 监控并下载日志文件
  • 显示 jvm 中的系统、以及环境变量
  • 显示 Spring Boot 配置属性
  • 简单的日志级别管理
  • 支持与 JMX bean 交互
  • 显示线程堆栈
  • 下载堆信息
  • 显示 http 跟踪
  • 显示 http 端点
  • 显示计划任务
  • 显示/ 删除活动会话
  • 显示 Flyway / Liquibase 迁移
  • 状态变更通知


看着还挺实用的吧?能了解很多 Spring Boot 系统的相关信息。


实战

废话少说,现在开始来实战。


Spring Boot 应用程序通过 Spring Boot Admin Client 以 http 的方式注册,Spring Cloud 应用程序则通过 Eureka, Consul 等进行注册,UI 只是 Spring Boot Actuator 端点之上的 Vue.js 应用程序。


本文以 Spring Boot 应用程序进行演示,所以,我们先搭个 Spring Boot Admin Server(服务端),再搭建个 Client(应用程序客户端)测试下。


Spring Cloud 服务注册可以参考:

https://codecentric.github.io/spring-boot-admin/#discover-clients-via-spring-cloud-discovery


1、搭建 Spring Boot Admin Server

Spring Boot 基础就不介绍了,推荐下这个实战教程:

https://github.com/javastacks/spring-boot-best-practice

或者看栈长之前的 Spring Boot 系列教程:

年轻人的第一个 Spring Boot 应用,太爽了!


首先通过上述教程构建一个简单的 Spring Boot 初始项目,端口为:8080。

然后添加 Spring Boot Admin Server 依赖:

<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>${spring-boot-admin-starter-server.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>


在启动类上添加 @EnableAdminServer 以启用 Spring Boot Admin Server:

/**
 * 作者:栈长
 * 来源微信公众号:Java技术栈
 */
@EnableAdminServer
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


另外,Spring Boot Admin Server 也是支持集群的,这里不另行演示了,有兴趣的的可以参考:

https://codecentric.github.io/spring-boot-admin/#clustering-support



2、搭建 Spring Boot Admin Client

首先通过上述教程构建一个简单的 Spring Boot 初始项目,端口为:8081。

然后添加 Spring Boot Admin Client 需要的依赖:

<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>${spring-boot-admin-starter-client.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

添加以下配置:

spring.boot.admin.client.url: http://localhost:8080
management.endpoints.web.exposure.include: "*"

1)配置 Spring Boot Admin Server 的地址;

2)Spring Boot 现在不会默认公开所有端点,所以这里需要手动放开全部端点。

让 actuator 所有端点可访问:

/**
 * 作者:栈长
 * 来源微信公众号:Java技术栈
 */
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().disable();
    }
}


这里为了测试,先禁用所有安全措施,确保所有端点可以被访问,不然无法被监控到,实际项目中自行设置安全性。


本节教程所有实战源码已上传到这个仓库:

https://github.com/javastacks/spring-boot-best-practice


3、测试

项目搭建和配置完后,现在先后启动 Server 和 Client。

必须先启动 Server,因为 Client 启动的时候需要向 Server 注册,不然会注册失败。


现在来访问 Server:

http://localhost:8080/

image.png


成功了,略有一点 Spring Cloud Eureka 页面的意味吧!

现在把客户端停掉,若干秒后页面会自动刷新:


image.png

状态变更可以通过邮件等方式进行通知,以实时关注你的服务运行状态,有需要的可以参考:

https://codecentric.github.io/spring-boot-admin/#_notifications




相关文章
|
2月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
3904 56
|
11月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2724 17
Spring Boot 两种部署到服务器的方式
|
9月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
377 0
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
575 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
786 2
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
514 2
|
监控 数据可视化 Java
springBoot:actuator&admin 图形可视化&spring 打包 (七)
本文介绍了Spring Boot Actuator及其图形化管理界面Spring Boot Admin的使用方法,包括依赖导入、服务端与客户端配置、以及如何打包为JAR和WAR文件并部署。通过这些步骤,可以实现应用的监控和管理功能。
610 0
|
Java Spring
Spring Boot Admin 授权配置
Spring Boot Admin 授权配置
248 0
|
Java Spring
Spring Boot Admin 自定义健康检查
Spring Boot Admin 自定义健康检查
235 0
|
监控 Java Spring
Spring Boot Admin 配置应用
Spring Boot Admin 配置应用
163 0

热门文章

最新文章