Spring Boot Admin是一個(gè)開源社區(qū)項(xiàng)目,用于管理和監(jiān)控SpringBoot應(yīng)用程序田炭。 應(yīng)用程序作為Spring Boot Admin Client向?yàn)镾pring Boot Admin Server注冊(cè)(通過HTTP)或使用SpringCloud注冊(cè)中心(例如Eureka师抄,Consul)發(fā)現(xiàn)。 UI是的AngularJs應(yīng)用程序教硫,展示Spring Boot Admin Client的Actuator端點(diǎn)上的一些監(jiān)控叨吮。常見的功能或者監(jiān)控如下:
顯示健康狀況
顯示詳細(xì)信息,例如
JVM和內(nèi)存指標(biāo)
micrometer.io指標(biāo)
數(shù)據(jù)源指標(biāo)
緩存指標(biāo)
顯示構(gòu)建信息編號(hào)
關(guān)注并下載日志文件
查看jvm系統(tǒng)和環(huán)境屬性
查看Spring Boot配置屬性
支持Spring Cloud的postable / env-和/ refresh-endpoint
輕松的日志級(jí)管理
與JMX-beans交互
查看線程轉(zhuǎn)儲(chǔ)
查看http跟蹤
查看auditevents
查看http-endpoints
查看計(jì)劃任務(wù)
查看和刪除活動(dòng)會(huì)話(使用spring-session)
查看Flyway / Liquibase數(shù)據(jù)庫遷移
下載heapdump
狀態(tài)變更通知(通過電子郵件瞬矩,Slack茶鉴,Hipchat,......)
狀態(tài)更改的事件日志(非持久性)
Spring Boot Admin Server配置
需求:采用spring security進(jìn)行權(quán)限管理
<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();
//登錄成功后進(jìn)行跳轉(zhuǎn)
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll() //放過
.antMatchers(adminContextPath + "/login").permitAll() //放過
.anyRequest().authenticated() //登錄驗(yàn)證
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() //表單登錄
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf() //設(shè)置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的賬號(hào)
spring.security.user.name=user
spring.security.user.password=222222
//指定server的信息及賬號(hào)
spring.boot.admin.client.url=http://localhost:8080
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=111111
//本身instance的賬號(hào)
spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}