乐趣区

关于java:Spring-Boot-Admin-横空出世

大家好,我是栈长。

前言

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

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

https://github.com/codecentri…

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…

1、搭建 Spring Boot Admin Server

Spring Boot 根底就不介绍了,举荐下这个实战教程:

https://github.com/javastacks…

或者看栈长之前的 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…

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…

欢送 Star 关注学习,后续会继续更新 Spring Boot 实战教程。

3、测试

我的项目搭建和配置完后,当初先后启动 Server 和 Client。

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

当初来拜访 Server:

http://localhost:8080/

胜利了,略有一点 Spring Cloud Eureka 页面的象征吧!

当初把客户端停掉,若干秒后页面会主动刷新:

状态变更能够通过邮件等形式进行告诉,以实时关注你的服务运行状态,有须要的能够参考:

https://codecentric.github.io…

4、更多详解

点击对应的我的项目进去,能够看到更多的细节。

细节

细节菜单中展现了一些衰弱、JVM 相干信息:

性能

性能菜单能够增加并显示各种性能指标:

环境

环境菜单中显示所有 Servlet 初始参数、零碎、环境变量参数等:

Bean

类菜单中显示所有 Spring 容器中的 Bean,及是否单例:

配置参数

配置属性菜单显示所有各种 Spring Boot 配置参数:

打算工作

打算工作菜单中显示所有的打算工作:

这里没有打算工作,咱们先轻易在客户端增加一个:

@Scheduled(cron = "0/10 * * * * ?")
public void task() {log.info("微信公众号 Java 技术栈正在执行打算工作。。。");
}

再重启客户端,刷新下页面:

这里只是展现工作信息及状态,并不能进行管制。

日志配置

日志配置菜单显示所有类的日志级别,并能批改某个类的日志级别:

默认状况下,日志文件无奈通过执行器端点拜访,须要在客户端设置 logging.file.pathlogging.file.name 参数来配置 Spring Boot 以写入日志文件:

logging:
  file:
    name: ./logs/sba-client.log

更多请浏览 Spring Boot 日志实战,关注公众号:Java 技术栈,在公众号菜单中浏览,我都整顿好了。

再重启客户端,刷新下页面:

实时展现日志,再也不必登录 Linux 一堆命令查看了。

JVM

JVM 菜单显示以后所有线程堆栈、堆栈,并能进行下载剖析:

映射

映射菜单显示所有的 URL 映射:

缓存

缓存菜单显示所有缓存:

这里不仅是展现,还能进行革除和治理。

更多的应用能够参考官网文档:

https://codecentric.github.io…

总结

Spring Boot Admin 用于治理和监控 Spring Boot 应用程序,原理就是通过客户端裸露的各种 /actuator 端点进行的,在此基础上进行了一些包装和 UI 展现。

Spring Boot Admin 不能齐全代替业余监控零碎,能监控也只是 /actuator 端点力不从心的,但对于那些简略的 Spring Boot 应用程序的监控还是很有帮忙的。

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

https://github.com/javastacks…

欢送 Star 关注学习,后续会继续更新 Spring Boot 实战教程。

好了,明天的分享就到这里了,前面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号 Java 技术栈第一工夫推送,我也将支流 Spring Boot 面试题和参考答案都整顿好了,在公众号后盾回复关键字 “ 面试 ” 进行刷题。

版权申明: 本文系公众号 “Java 技术栈 ” 原创,转载、援用本文内容请注明出处,剽窃、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权力。

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版