SpringBoot Admin (一)基本介绍与配置集成
SpringBoot Adminadmin 发布于:2023-01-28 16:25:16
阅读:loading
SpringBoot Admin是对Spring Boot应用程序提供的管理UI界面集成,区分Server和Client端,使用Http接口对外提供监控参数输出。提供的管理功能丰富多样,如Insights、日志配置、JVM、映射、缓存等多个功能的接入,同时对于注册的服务状态可以适时的呈现,详细展示如下:
细节:信息、健康、元数据、进程、线程、垃圾回收、内存: Heap、内存: Non heap;
性能:给指定服务增加监控状态指标;
环境:输出application.yml和Jvm启动时包含的参数,如:java.home、user.dir等;
类:输出Spring Bean的实例名称和类型;
配置属性:spring.boot.admin、inetUtilsProperties、serviceInstanceConverter、management.endpoints、spring.resources等较多的内置属性;
计划任务:输出系统内部的定时任务(本站有定制改造);
日志文件:动态滚动日志文件数据内容,可在线查看日志;
日志配置:展示系统的日志输出器,可筛选日志类和设置日志输出级别;
线程转储、内存转储,太高端,值得自行查看和深入求证;
在线查看使用的缓存组件和缓存数据,可清除缓存;
需要依赖spring-boot-starter-web、spring-boot-admin-starter-server、spring-boot-starter-security。
application.yaml配置文件
server:
port: 8010
servlet:
context-path: /admin
spring:
#应用名称
application:
name: chendd-admin-server
cloud:
#nacos 客户端
nacos:
discovery:
#是否启用
enabled: true
#服务端地址(集群化部署参数)
server-addr: 192.168.244.134:8848,192.168.244.138:8848,192.168.244.139:8848
#命名空间
namespace: chendd-SpringCloud-Hello-World-NamespaceId
group: DEFAULT_GROUP
metadata:
management:
context-path: ${server.servlet.context-path}/actuator
user.name: admin
user.password: 123456
security:
user:
name: admin
password: 123456
#thymeleaf 检查设置
thymeleaf:
check-template: false
check-template-location: false
#监控地址
management:
endpoints:
web:
base-path: /actuator
exposure:
include: '*'
endpoint:
health:
show-details: always
关键参数说明
spring.cloud.nacos是集成Naocs注册中心,将当前服务注册值注册中心,可以从注册中心中得到其它注册过的服务,无需使被集成的应用与Admin Server直连;
spring.cloud.nacos.discovery.metadata是对外保留服务监控的接口地址,user信息则是Admin服务开启的登录账户;
spring.security是Spring Security 安全认证模块的用户名和密码,启用用户登录;
management是监控参数设置;
需要增加@SpringBootApplication、@EnableAdminServer;
package cn.chendd;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
/**
* Spring Boot Admin 安全验证
*
* @author chendd
* @date 2022/10/18 17:03
*/
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
private final AdminServerProperties serverProperties;
public SecurityPermitAllConfig(@Autowired AdminServerProperties serverProperties) {
this.serverProperties = serverProperties;
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
///所有地址不需要权限访问,即不需要登录和登出
/*httpSecurity.authorizeRequests().anyRequest().permitAll();*/
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(serverProperties.path("/"));
httpSecurity.authorizeRequests()
//配置所有的静态资源和登录地址运行免登陆访问
.antMatchers(serverProperties.path("/assets/**")).permitAll()
.antMatchers(serverProperties.path("/login")).permitAll()
.antMatchers(serverProperties.path("/instances/**")).permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(serverProperties.path("/login")).successHandler(successHandler)
.and().logout().logoutUrl(serverProperties.path("/logout"))
.and().httpBasic().and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
serverProperties.path("/instances"),
serverProperties.path("/actuator/**")
);
}
}
(登录界面)
(应用列表)
(细节预览)
(环境预览)
(计划任务)
(1)SpringBoot Admin模块具备通知提醒的功能,比如某个服务的状态发生变化时,可以发送邮件提醒(起初并未配置此功能,此处先就略过吧);
(2)计划任务(上图有)列表的功能本站有修改增强,值得一看;
(3)日志配置模块有日志文件的功能,改功能可以滚动输出日志文件内容,本站同样进行了分析实现,值得一看;
(4)项目工程源码见:源码下载.zip;
(5)在线gif图片近2M,不给出在线预览了,可以下载后本地查看:https://www.chendd.cn/file/ueditor/jsp/upload/image/20230128/1674914371771048276.gif;
(6)若开启了密码模式,在敲地址访问需要登录的页面时也会弹出密码输入页面,参考如下:
点赞