스프링 부트 액추에이터

3081 단어
스프링 부트 액추에이터 기능을 사용하여 애플리케이션을 쉽게 모니터링하는 데 사용할 수 있는 애플리케이션 세부 정보, 메트릭 등을 게시할 수 있습니다.

액추에이터 스타터 종속성을 사용하여 액추에이터 기능을 활성화할 수 있습니다.

아래 스니펫은 maven 종속성을 보여줍니다.

이 종속성을 추가하면 애플리케이션에서 필요한 구성이 자동으로 구성되고 기본 액추에이터 끝점 및 상태 표시기도 활성화됩니다.

org.springframework.boot
스프링 부트 스타터 액추에이터

액추에이터 끝점

액추에이터 종속성을 추가하기만 하면 이제 애플리케이션에 디버깅 또는 일반적인 마이크로 서비스 통찰력에 매우 유용한 많은 정보가 노출됩니다.

대부분의 엔드포인트는 민감합니다. 즉 완전히 공개되지는 않지만 소수의 엔드포인트는/health 및/info가 아닙니다.

몇 가지 종점에 대한 설명:
  • /health: 애플리케이션 상태를 노출합니다.
  • /beans: 애플리케이션 컨텍스트에서 구성된 스프링 빈을 노출합니다. Bean의 범위, Bean 유형 등과 같은 세부 정보를 제공합니다.
  • /caches: 응용 프로그램에서 사용 가능한 캐시를 노출합니다.
  • /env: 사용 가능한 모든 환경 구성 속성 세부 정보를 제공합니다.
  • /configprops: 사용 가능한 모든 구성 클래스 목록을 표시합니다.
  • /mappings: 애플리케이션에서 사용 가능한 모든 HTTP 요청 매핑 세부 정보를 노출합니다.
  • /metrics: JVM 메트릭, 시스템 메트릭 및 tomcat 서버 메트릭 등과 같은 애플리케이션 메트릭을 노출합니다.
  • /heapdump: 애플리케이션 힙 덤프를 제공합니다.
  • /threaddump: 스레드 정보를 노출합니다.
  • /loggers: 로그 수준 등과 같은 로깅 응용 프로그램 구성 정보를 노출합니다.
  • /logfile: 웹 애플리케이션의 경우 이 엔드포인트는 로그 파일 콘텐츠를 반환합니다. 로그 파일의 일부만 검색할 수도 있습니다.
  • /shutdown: 이 엔드포인트를 사용하여 스프링 부트 애플리케이션을 정상적으로 종료할 수 있습니다. 이것은 기본적으로 비활성화되어 있습니다.

  • 액추에이터 엔드포인트 포함 또는 제외

    #To include all the default web endpoints:
    management.endpoints.web.exposure.include=*
    
    #To include specific web endpoints:
    management.endpoints.web.exposure.include=health,info
    
    #To exclude specific web endpoints:
    management.endpoints.web.exposure.exclude=beans
    
    


    액추에이터 http 관리 포트 변경

    management.server.port=9080
    


    맞춤형 액추에이터 엔드포인트 생성

    package com.actuatorsample;
    
    import java.util.HashMap;
    import java.util.Map; 
    import org.springframework.boot.actuate.endpoint.annotation.DeleteOperation;
    import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
    import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
    import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
    import org.springframework.stereotype.Component;
    
    @Component
    @Endpoint(id = "sampleEndpoint")
    public class CustomActuator {
    
        @ReadOperation
        public Map<String, String> readEndpoint() {
            Map<String, String> map = new HashMap<>();
            map.put("readMessage", "This is our sample actuator endpoint.!!");
            return map;
        }
    
        @WriteOperation
        public Map<String, String> writeEndpoint(String value) {
    
            Map<String, String> map = new HashMap<>();
            map.put("writeMessage", "This is sample actuator write endpoint.!!" + value);
            return map;
        }
    
        @DeleteOperation
        public Map<String, String> deleteEndpoint() {
            Map<String, String> map = new HashMap<>();
            map.put("readMessage", "This is sample actuator delete endpoint.!!");
            return map;
        }
    }
    

    좋은 웹페이지 즐겨찾기