Spring Boot Admin 마이크로 서비스 응용 모니터링 의 실현

Spring Boot Admin 은 SpringBoot 응용의 각종 기준 을 모니터링 할 수 있 고 마이크로 서비스 구조 중의 모니터링 센터 로 사용 할 수 있 으 며 본 고 는 그 용법 에 대해 상세 하 게 소개 할 것 이다.
스프링 부 트 관리자 안내
SpringBoot 응용 은 Actuator 를 통 해 응용 운영 과정 에서 의 각종 지 표를 노출 시 킬 수 있 습 니 다.Spring Boot Admin 은 이러한 지 표를 통 해 SpringBoot 응용 을 모니터링 한 다음 에 도형 화 된 인터페이스 를 통 해 나타 납 니 다.Spring Boot Admin 은 단일 응용 을 감시 할 수 있 을 뿐만 아니 라 Spring Cloud 의 등록 센터 와 결합 하여 마이크로 서비스 응용 을 감시 할 수 있다.
Spring Boot Admin 은 다음 과 같은 모니터링 정 보 를 제공 할 수 있 습 니 다.
  • 모니터링 응용 운행 과정 에서 의 개관 정보;
  • 도량 지표 정보,예 를 들 어 JVM,Tomcat 및 프로 세 스 정보;
  • 환경 변수 정보,예 를 들 어 시스템 속성,시스템 환경 변수 와 응용 설정 정보;
  • 만 든 Bean 정 보 를 모두 보기;
  • 응용 프로그램의 모든 설정 정 보 를 보기;
  • 응용 실행 로그 정보 보기;
  • JVM 정보 보기;
  • 방문 할 수 있 는 웹 터미널 보기;
  • HTTP 추적 정보 보기.
  • 감시 센터 로 기능 을 보 여 주 는 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
    시작 클래스 에@EnableAdminServer 를 추가 하여 admin-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-server 와 admin-client 서 비 스 를 시작 합 니 다.
    모니터링 정보 데모
    다음 주소 로 가서 Spring Boot Admin 홈 페이지 를 엽 니 다.http://localhost:9301

    Wallboard 단 추 를 누 르 고 admin-client 를 선택 하여 모니터링 정 보 를 봅 니 다.
    모니터링 정보 개관;

    측정 지표 정보,예 를 들 어 JVM,Tomcat 및 프로 세 스 정보;

    환경 변수 정보,예 를 들 어 시스템 속성,시스템 환경 변수 와 응용 설정 정보;

    만 든 Bean 정보 모두 보기;

    응용 프로그램의 모든 설정 정보 보기;

    로그 정 보 를 보 려 면 아래 설정 을 추가 해 야 열 수 있 습 니 다.
    
    logging:
     file: admin-client.log #    admin     

    JVM 정보 보기;

    접근 가능 한 웹 터미널 보기;

    HTTP 추적 정보 보기;

    결합 등록 센터 사용
    Spring Boot Admin 은 Spring Cloud 등록 센터 와 결합 하여 사용 합 니 다.admin-server 와 등록 센터 를 통합 하면 됩 니 다.admin-server 는 자동 으로 등록 센터 에서 서비스 목록 을 얻 은 다음 에 하나씩 모니터링 정 보 를 얻 습 니 다.유레카 등록 센터 를 예 로 들 어 이 기능 을 소개 한다.
    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);
     }
    
    }
    기능 데모
    eureka-server 를 시작 하고 application-eureka.yml 설정 을 사용 하여 admin-server,admin-client 를 시작 합 니 다.
    등록 센터 를 보 니 서비스 가 모두 등록 되 어 있 습 니 다.http://localhost:8001/

    Spring Boot Admin 홈 페이지 를 보면 서비스 정 보 를 볼 수 있 습 니 다.http://localhost:9301

    로그 인 인증 추가
    admin-server 에 Spring 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/
    admin-client 가 등록 할 수 있 도록 SpringSecurity 를 설정 합 니 다.
    
    /**
     * 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.         
        .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
        .logout().logoutUrl(adminContextPath + "/logout").and()
        //3.  http basic  ,admin-client       
        .httpBasic().and()
        .csrf()
        //4.    cookie csrf  
        .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);
     }
    
    }
    eureka-server,admin-security-server 를 시작 합 니 다.Spring Boot Admin 홈 페이지 를 방문 하면 로그 인해 야 접근 할 수 있 습 니 다.http://localhost:9301

    사 용 된 모듈
    
    springcloud-learning
    ├── eureka-server -- eureka    
    ├── admin-server -- admin      
    ├── admin-client -- admin           
    └── admin-security-server --       admin      
    프로젝트 원본 주소
    https://github.com/macrozheng/springcloud-learning
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기