Spring Boot 4 대 신기 의 Actuator

Spring Boot 는 Actuator 실행 기 라 는 모듈 을 가지 고 있 으 며 프로그램 에 대한 지표 와 통계 정 보 를 사용 할 수 있 습 니 다.예 를 들 어 로 그 를 수집 하고 지 표를 보 며 스 레 드 덤 프 를 실행 하고 환경 변 수 를 표시 하 며 쓰레기 수집 을 이해 하고 BeanFactory 에 설 치 된 bean 을 표시 할 수 있 습 니 다.HTTP, JMX 를 통 해 이 정 보 를 공개 하거나 SSH 를 통 해 직접 로그 인 할 수 있 습 니 다.
응용 프로그램 지표 와 정보 공개
스프링 부 트 애플 리 케 이 션 을 성공 적 으로 개발 한 후 생산 환경 에 배치 하면 어떻게 모니터링 할 것 인가?어떻게 해야만 프로그램의 운행 방식 을 이해 할 수 있 습 니까?우리 의 마이크로 서 비 스 는 일반적으로 블랙박스 이다. 우리 가 지 표를 외부 에 공개 하 는 방법 을 명확 하 게 고려 하지 않 는 한.
Spring Boot 는 Actuator 라 고 불 리 는 미리 포 장 된 시동 기 를 추가 하여 이 목 표를 쉽게 실현 할 수 있 습 니 다.
액 츄 에이 터 사용 하기
Boot 에서 기 존 실행 기 를 사용 하려 면 - spring - boot - actuator 의존 항목 을 pom 에 추가 하기 만 하면 됩 니 다.

  org.springframework.boot
  spring-boot-starter-actuator
  2.0.4.RELEASE


이렇게 간단 해!현재 실행 기 를 기 존 프로그램 에 추가 하 였 습 니 다.프로그램 을 다시 시작 할 때 사용자 접근 을 위 한 터미널 을 사용 합 니 다.더 자세 한 설정 과 도량 의 사용자 정 의 는 다음 부분 에서 소개 할 것 입 니 다.
실행 기 터미널
실행 기 의존 항목 만 추가 하면 저희 프로그램 은 현재 대량의 정 보 를 공 개 했 습 니 다. 이것 은 디 버 깅 이나 일반적인 마이크로 서비스 에 대한 통찰 에 매우 편리 합 니 다.
대부분의 단점 은 민감 하 다. - 이것 은 그것들 이 완전히 공개 되 지 않 았 다 는 것 을 의미한다. - 소수의 단점 은 그렇지 않다. 예 를 들 어/health 와/info 이다.
다음은 Boot 가 제공 하 는 가장 흔히 볼 수 있 는 점 입 니 다.
  • /health - 응용 프로그램의 운행 상황 정보 표시 (인증 되 지 않 은 연결 을 통 해 접근 할 때의 간단 한 '상태' 또는 인증 을 거 쳤 을 때의 전체 메시지 상세 정보 포함).기본 적 인 상황 에서 그것 은 민감 하지 않다.
  • /info - 임의의 프로그램 정 보 를 표시 합 니 다.민감 하지 않 음 을 묵인 하 다.
  • /metrics - 현재 프로그램의 '지표' 정 보 를 표시 합 니 다.그것 은 기본적으로 민감 하 다.
  • /trace - 추적 정보 표시 (기본 값 으로 마지막 HTTP 요청).

  • 공식 문서 에서 기 존 터미널 의 전체 목록 을 찾 을 수 있 습 니 다.
    사용자 정의 관리 서버 포트
    기본 HTTP 포트 를 사용 하여 관리 점 을 공개 하 는 것 은 클 라 우 드 배 치 를 기반 으로 하 는 현명 한 선택 입 니 다.단, 프로그램 이 자신의 데이터 센터 에서 실행 된다 면, 다른 HTTP 포트 를 사용 하여 단점 을 공개 하 는 것 을 더 좋아 할 수도 있 습 니 다.
    management. port 속성 을 사용 하면 HTTP 포트 를 변경 할 수 있 습 니 다.
    management.port=8081
    

    안전 하 다.
    대부분의 경우 터미널 을 통 해 공 개 된 상세 한 정 보 는 민감 하기 때문에 사용자 에 게 상세 한 정 보 를 볼 수 있 는 권한 을 부여 해 야 한다.터미널 을 보호 하기 위해 spring security 를 추가 할 수 있 습 니 다.의존 항목 만 추가 하면 클래스 경로 에 spring 보안 파일 이 있 을 때 자동 으로 설정 합 니 다.
    
      org.springframework.boot
      spring-boot-starter-security
    
    

    기본적으로 basic 보안 을 사용 합 니 다.모든 터미널 에 사용 합 니 다.단, application. properties 파일 을 업데이트 하여 사용 하지 않 고 안전성 이 없 는 상태 에서 비 민감 점 을 공개 할 수 있 습 니 다.
    다음은 spring boot 실행 기 프로그램의 안전성 을 설정 하 는 데 필요 한 기본 항목 입 니 다.
    management.security.enabled=true
    security.basic.enabled=true
    security.user.name=admin
    security.user.password=admin
    

    위의 설정 에서 저 희 는 기본 보안 을 사용 하고 사용자 이름과 비밀 번 호 를 제공 하여 터미널 에 접근 합 니 다.사용자 가 터미널 에 접근 하려 고 시도 할 때 브 라 우 저 에 서 는 인증 서 를 사용 하여 사용 자 를 인증 합 니 다.
    사용자 정의 점
    다음 형식 으로 속성 을 사용 하여 각 점 을 사용자 정의 할 수 있 습 니 다.
    endpoints.[endpoint name].[property to customize]
    

    세 가지 속성 이 있 습 니 다:
  • id - HTTP 를 통 해 이 점 에 접근
  • enabled - true 라면 접근 할 수 있 습 니 다. 그렇지 않 으 면 접근 할 수 없습니다
  • sensitive - 그렇다면 HTTP 를 통 해 핵심 정 보 를 표시 할 수 있 는 권한 을 부여 해 야 합 니 다.

  • 예 를 들 어 다음 속성 을 추가 하면 사용자 정의/beans 단점:
    endpoints.beans.id=springbeans
    endpoints.beans.sensitive=false
    endpoints.beans.enabled=true
    

    건강 점
    /health 터미널 은 실행 중인 프로그램의 건강 상 태 를 검사 하 는 데 사 용 됩 니 다.그것 은 보통 기본 감시 소프트웨어 로 생산 에 고장 이 났 을 때 알려 줍 니 다.
    기본적으로 HTTP 를 통 해 권한 이 부여 되 지 않 은 접근 을 위해 건강 정보 만 표시 합 니 다.
    {
       "status" : "UP"
    }
    

    이 건강 정 보 는 HealthIndicator 응용 프로그램의 상하 문 에 설 정 된 모든 bean 에서 인 터 페 이 스 를 수집 합 니 다.
    되 돌아 오 는 일부 정보 HealthIndicator 는 본질 적 으로 민감 합 니 다. - 하지만 디스크 공간, 데이터 원본 등 다른 정 보 를 공개 하기 위해 endpoints. health. sensitive = false 를 설정 할 수 있 습 니 다.
    사용자 정의 Health 터미널
    건강 지 표를 사용자 정의 할 수 있 습 니 다.HealthIndicator 인 터 페 이 스 를 확장 하고 자신의 실현 을 제공 할 수 있 습 니 다.이 유형의 사용자 정의 클래스 를 만 들 고 helh () 방법 을 덮어 씁 니 다. 사용자 정의 논 리 는 기본 기능 을 덮어 씁 니 다.
    @Component
    public class CustomHealthCheck implements HealthIndicator {
        public Health health() {
            int errorCode = 0;
            if (errorCode != 1) {
                return Health.down().withDetail("Error Code", errorCode).build();
            }
            return Health.up().build();
        }
    
    }
    

    출력 은:
    {
      "status": "DOWN",
      "customHealthCheck": {
        "status": "DOWN",
        "Error Code": 0
      },
      "diskSpace": {
        "status": "UP",
        "free": 19593824409432,
        "threshold": 15485791
      }
    }
    

    정보 점
    사용자 정의/info 터미널 에 표 시 된 데이터 도 사용 할 수 있 습 니 다. - 예 를 들 어:
    endpoints.info.id=info
    endpoints.info.sensitive=false
    endpoints.info.enabled=true
    info.app.name=Spring Actuator Example
    info.app.description=Simple project of Spring Actuator with examples
    info.app.version=0.0.1-SNAPSHOT
    

    예제 출력:
    {
       "app": {
         "version": "0.0.1-SNAPSHOT",
         "description": "Simple project of Spring Actuator with examples",
         "name": "Spring Actuator Example"
       }
    }
    

    Metrics 단점
    측정 점 은 운영 체제, JVM 과 응용 프로그램 등급 의 측정 정 보 를 수집 하고 발표 하 는 더욱 중요 한 점 중 하나 로 상 자 를 열 면 바로 사용 할 수 있다.메모리, 더미, 프로세서, 스 레 드, 로드 클래스, 마 운 트 해제 클래스, 스 레 드 탱크, HTTP 지표 등 을 얻 을 수 있 습 니 다.
    덤 프 터미널
    프로그램 이 성능 에 문제 가 있 을 때 Thread Dumps 가 중요 합 니 다.정상 적 인 상황 에서 생산 서버 관리자 에 게 잦 은 간격 으로 Thread Dumps 를 요청 하고 분석 을 보 내야 합 니 다.그러나 이 는 많은 시간 이 걸 리 고 실제 성능 문제 가 발생 했 을 때 만 Thread Dumps 가 필요 하 다.
    이 노드 는 생산 프로그램 에 진정한 장점 을 제공 할 것 입 니 다. 브 라 우 저 를 사용 하여 프로그램 에 접근 하면 Thread Dumps 를 얻 을 수 있 습 니 다.Spring Boot 가 생산 애플 리 케 이 션 에 이렇게 뛰어난 기능 을 제공 하 는 것 을 보 니 정말 좋 습 니 다!
    사용자 정의 터미널 구현
    Spring Boot 가 인용 한 기본 점 을 제외 하고 인터페이스 Endpoint 를 통 해 자신의 점 을 작성 할 수 있 습 니 다.프로그램 에 대한 자세 한 정 보 를 공개 하고 싶 을 때 유용 합 니 다.예 를 들 어 이 예제 에서 저 는 프로그램의 서버 상세 정 보 를 표시 하기 위해 사용자 정의 터미널 을 만 들 었 습 니 다.
    실현 류 는 이렇게 보인다.
    @Component
    public class ServerEndpoint implements Endpoint> {
    
      public String getId() {
          return "server";
      }
    
      public List invoke() {
          List serverDetails = new ArrayList();
          try {
              serverDetails.add("Server IP Address : " + InetAddress.getLocalHost().getHostAddress());
              serverDetails.add("Server OS : " + System.getProperty("os.name").toLowerCase());
          } catch (Exception e) {
              e.printStackTrace();
          }
          return serverDetails;
      }
    
      public boolean isEnabled() {
          return true;
      }
    
      public boolean isSensitive() {
          return false;
      }
    
    }
    

    이것 은 출력 모양 입 니 다:
    ["Server IP Address : 192.168.1.164","Server OS : Mac OS X"]
    

    총결산
    Actuator 는 Spring Boot 프로젝트 에서 매우 강력 한 기능 으로 응용 프로그램 을 감시 하고 관리 하 는 데 도움 이 되 며 restful api 요청 을 통 해 응용 프로그램의 운행 상황 을 감독, 감사, 수집 할 수 있 습 니 다.
    Spring boot 2.0 이 발표 되면 서 Actuator 는 많은 새로운 기능 을 얻 었 다.이 는 재 설계 되 고 새로운 edpoints 를 추 가 했 지만 Actuator 는 기본 적 인 의 도 를 보류 하고 모델 을 간소화 하여 기능 을 확장 하고 더 좋 은 기본 설정 을 사용 했다.
    Spring Boot 1. x 와 2. x 의 용법 과 차이 점 은 우리 의 다른 글 을 참조 할 수 있 습 니 다. 서비스 모니터링 Spring Boot Actuator 소개

    좋은 웹페이지 즐겨찾기