Spring Boot (22) 액추에이터

넙데데맨·2022년 10월 12일
0

액추에이터

애플리케이션 개발 후 운영 단계에서 정상 동작하는 지 확인하는 것이 중요하다.
스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.

JMX

Java Managerment Extensions
실행 중인 애플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API

엔드포인트

액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로이다.
스프링 부트에는 여러 내장 엔드포인트가 포함되어 있으며 커스텀 엔드포인트를 추가할 수도 있다.

액추에이터 추가 시 /actuator URL이 추가 되며 다른 경로로 설정을 원할 시 application.properties 파일에 작성한다.

management.endpoints.web.base-path=/custom-path

그 외에도 다양한 엔드포인트를 사용해 다양한 정보를 표시하는 기능을 활성화하거나 노출 여부를 변경할 수 있다.

노출 여부는 JMX를 통한 노출과 HTTP를 통한 노출이 있다.
엔드 포인트는 애플리케이션에 관한 민감한 정보를 포함하고 있기 때문에 노출 설정을 신중하게 고려해야한다.

액추에이터 기능

액추에이터를 활성화하고 노출 지점을 설정하면 애플리케이션에서 해당 기능을 사용할 수 있다.

/info

가동 중인 애플리케이션의 정보를 볼 수 있다.
application.properties 파일에 info의 속성 값들을 정의해 어플리케이션의 정보를 작성할 수 있다.
/actuator/info URL로 접속할 시 정의한 애플리케이션의 정보를 확인할 수 있다.

/health

가동중인 애플리케이션의 상태를 확인할 수 있다.

/beans

스프링 컨테이너에 등록된 스프링 빈의 전체 목록을 표시할 수 있다.

/condition

스프링 부트의 자동설정 조건 내역을 확인하기 위한 엔드포인트

/env

스프링 환경변수 정보 확인 시 사용
application.properties 파일 변수와 OS,JVM의 환경변수도 함께 표시된다.

/loggers

애플리케이션 로깅 레벨 수준이 어떻게 설정됐는지 확인

액추에이터 커스텀 기능

개발자의 요구사항에 맞는 커스텀 기능 설정 역시 제공한다.

액추에이터 커스텀 방법

  • 기존 기능에 내용 추가
  • 새로운 엔드포인트 개발

기존 기능 내용 추가

액추에이터에서 제공하는 InfoContributor 인터페이스를 구현하는 클래스를 생성한다.

@Component
public class CumstomInfoContributor implements InfoContributor{
	@Override
    public void contribute(Builder builder){
    	Map<String,Object> content = new HashMap<>();
        content.put("code-info", "InfoContributor에서 정의한 정보.");
        builder.withDetail("custom-info-contributor",content);
    }
}

InfoContributor 인터페이스를 구현할 시 contribute() 메서드를 오버라이딩해 Builder 객체에 withDetail 메소드를 사용해서 정보를 포함시켜 주면 엔드포인트 출력 시 커스텀 내용을 확인할 수 있다.

커스텀 엔드포인트 생성

@Endpoint 어노테이션으로 빈에 추가된 객체들은
@ReadOperation @WriteOperation @DeleteOperation
커스텀 엔드포인트를 노출시키는 어노테이션
@JmxEndpoint @WebEndpoint JMX, HTTP에서만 사용하는 것으로 제한하는 어노테이션

profile
차근차근

0개의 댓글