Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:
显示健康状况
显示详细信息,例如
JVM和内存指标
micrometer.io指标
数据源指标
缓存指标
显示构建信息编号
关注并下载日志文件
查看jvm系统和环境属性
查看Spring Boot配置属性
支持Spring Cloud的postable / env-和/ refresh-endpoint
轻松的日志级管理
与JMX-beans交互
查看线程转储
查看http跟踪
查看auditevents
查看http-endpoints
查看计划任务
查看和删除活动会话(使用spring-session)
查看Flyway / Liquibase数据库迁移
下载heapdump
状态变更通知(通过电子邮件,Slack,Hipchat,......)
状态更改的事件日志(非持久性)
Spring Boot Admin Server配置
需求:采用spring security进行权限管理
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
security配置
@SpringBootApplication
@EnableAdminServer
public class SbaServerApplication extends WebSecurityConfigurerAdapter{
public static void main(String[] args) {
SpringApplication.run(SbaServerApplication.class, args);
}
@Autowired
private AdminServerProperties adminServerProperties;
@Override
protected void configure(HttpSecurity http) throws Exception {
String adminContextPath = adminServerProperties.getContextPath();
//登录成功后进行跳转
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll() //放过
.antMatchers(adminContextPath + "/login").permitAll() //放过
.anyRequest().authenticated() //登录验证
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() //表单登录
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf() //设置csrf
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
adminContextPath + "/instances",
adminContextPath + "/actuator/**"
);
}
}
配置文件
spring.application.name=sba-server
server.port=8080
spring.security.user.name=admin
spring.security.user.password=111111
spring boot admin client 配置
pom配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置文件
spring.application.name=sba-client-1
server.port=8081
//endpoint暴露全部端口
management.endpoints.web.exposure.include=*
//指定info信息
info.demo.name=Spring Boot Admin Client Demo
//client的账号
spring.security.user.name=user
spring.security.user.password=222222
//指定server的信息及账号
spring.boot.admin.client.url=http://localhost:8080
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=111111
//本身instance的账号
spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}