Back to Javatutorial

SpringBoot Admin

docs/monitor/SpringBoot Admin.md

1.0.08.4 KB
Original Source

ժҪ

Spring Boot Admin ԶSpringBootӦõĸָмأΪ΢ܹеļʹãĽ÷ϸܡ

Spring Boot Admin

SpringBootӦÿͨActuator¶Ӧйеĸָ꣬Spring Boot AdminͨЩָSpringBootӦãȻͨͼλֳSpring Boot AdminԼصӦãԺSpring Cloudע΢Ӧá

Spring Boot Admin ṩӦõ¼Ϣ

  • ӦйеĸϢ
  • ָϢJVMTomcatϢ
  • ϢϵͳԡϵͳԼӦϢ
  • 鿴дBeanϢ
  • 鿴ӦеϢ
  • 鿴Ӧ־Ϣ
  • 鿴JVMϢ
  • 鿴ԷʵWeb˵㣻
  • 鿴HTTPϢ

admin-serverģ

Ǵһadmin-serverģΪʾ书ܡ

  • pom.xml
<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>

  • application.ymlнã
spring:
 application:
 name: admin-server
server:
 port: 9301
  • @EnableAdminServeradmin-serverܣ
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

 public static void main(String[] args) {
 SpringApplication.run(AdminServerApplication.class, args);
 }

}

admin-clientģ

Ǵһadmin-clientģΪͻעᵽadmin-server

  • pom.xml
<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>
  • application.ymlнã
spring:
 application:
 name: admin-client
 boot:
 admin:
 client:
 url: http://localhost:9301 #admin-serverַ
server:
 port: 9305
management:
 endpoints:
 web:
 exposure:
 include: '*'
 endpoint:
 health:
 show-details: always
logging:
 file: admin-client.log #ӿadmin־
  • admin-serveradmin-client

Ϣʾ

  • wallboardťѡadmin-client鿴Ϣ

  • Ϣ

  • ָϢJVMTomcatϢ

  • ϢϵͳԡϵͳԼӦϢ

  • 鿴дBeanϢ

  • 鿴ӦеϢ

  • 鿴־ϢҪòܿ

logging: file: admin-client.log #ӿadmin־

  • 鿴JVMϢ

  • 鿴ԷʵWeb˵㣻

  • 鿴HTTPϢ

עʹ

Spring Boot AdminSpring Cloud עʹãֻ轫admin-serverעϼɣadmin-server ԶעĻȡбȻ󰤸ȡϢEurekaעΪ¸ùܡ

޸admin-server

  • pom.xml
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • application-eureka.ymlнãֻעüɣ
spring:
 application:
 name: admin-server
server:
 port: 9301
eureka:
 client:
 register-with-eureka: true
 fetch-registry: true
 service-url:
 defaultZone: http://localhost:8001/eureka/
  • @EnableDiscoveryClient÷עṦܣ
`@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

 public static void main(String[] args) {
 SpringApplication.run(AdminServerApplication.class, args);
 }

}

޸admin-client

  • pom.xml
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • application-eureka.ymlнãɾԭadmin-serverַãעüɣ
spring:
 application:
 name: admin-client
server:
 port: 9305
management:
 endpoints:
 web:
 exposure:
 include: '*'
 endpoint:
 health:
 show-details: always
logging:
 file: admin-client.log #ӿadmin־
eureka:
 client:
 register-with-eureka: true
 fetch-registry: true
 service-url:
 defaultZone: http://localhost:8001/eureka/
  • @EnableDiscoveryClient÷עṦܣ
@EnableDiscoveryClient
@SpringBootApplication
public class AdminClientApplication {

 public static void main(String[] args) {
 SpringApplication.run(AdminClientApplication.class, args);
 }

}

ʾ

ӵ¼֤

ǿͨadmin-serverSpring Security֧õ¼֤ܡ

admin-security-serverģ

  • pom.xml
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
 <groupId>de.codecentric</groupId>
 <artifactId>spring-boot-admin-starter-server</artifactId>
 <version>2.1.5</version>
</dependency>
<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>
  • application.ymlнãõ¼û룬admin-security-serverļϢ
spring:
 application:
 name: admin-security-server
 security: # õ¼û
 user:
 name: macro
 password: 123456
 boot:  # ʾadmin-security-serverļϢ
 admin:
 discovery:
 ignored-services: ${spring.application.name}
server:
 port: 9301
eureka:
 client:
 register-with-eureka: true
 fetch-registry: true
 service-url:
 defaultZone: http://localhost:8001/eureka/
  • SpringSecurityãԱadmin-clientע᣺

scss

ƴ

/**
 * Created by macro on 2019/9/30.
 */
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
 private final String adminContextPath;

 public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
 this.adminContextPath = adminServerProperties.getContextPath();
 }

 @Override
 protected void configure(HttpSecurity http) throws Exception {
 SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
 successHandler.setTargetUrlParameter("redirectTo");
 successHandler.setDefaultTargetUrl(adminContextPath + "/");

 http.authorizeRequests()
 //1.о̬Դ͵¼ҳԹ
 .antMatchers(adminContextPath + "/assets/**").permitAll()
 .antMatchers(adminContextPath + "/login").permitAll()
 .anyRequest().authenticated()
 .and()
 //2.õ¼͵dz·
 .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
 .logout().logoutUrl(adminContextPath + "/logout").and()
 //3.http basic֧֣admin-clientעʱҪʹ
 .httpBasic().and()
 .csrf()
 //4.cookiecsrf
 .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
 //5.Щ·csrfԱadmin-clientע
 .ignoringAntMatchers(
 adminContextPath + "/instances",
 adminContextPath + "/actuator/**"
 );
 }
}
  • ޸࣬AdminServerעֹᷢܣ
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class AdminSecurityServerApplication {

 public static void main(String[] args) {
 SpringApplication.run(AdminSecurityServerApplication.class, args);
 }
}

ʹõģ

springcloud-learning
 eureka-server -- eurekaע
 admin-server -- adminķ
 admin-client -- adminļصӦ÷
 admin-security-server -- ¼֤adminķ`