애플리케이션 개발 후 운영 단계에서 정상 동작하는 지 확인하는 것이 중요하다.
스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.
Java Managerment Extensions
실행 중인 애플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API
액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로이다.
스프링 부트에는 여러 내장 엔드포인트가 포함되어 있으며 커스텀 엔드포인트를 추가할 수도 있다.
액추에이터 추가 시 /actuator
URL이 추가 되며 다른 경로로 설정을 원할 시 application.properties 파일에 작성한다.
management.endpoints.web.base-path=/custom-path
그 외에도 다양한 엔드포인트를 사용해 다양한 정보를 표시하는 기능을 활성화하거나 노출 여부를 변경할 수 있다.
노출 여부는 JMX를 통한 노출과 HTTP를 통한 노출이 있다.
엔드 포인트는 애플리케이션에 관한 민감한 정보를 포함하고 있기 때문에 노출 설정을 신중하게 고려해야한다.
액추에이터를 활성화하고 노출 지점을 설정하면 애플리케이션에서 해당 기능을 사용할 수 있다.
가동 중인 애플리케이션의 정보를 볼 수 있다.
application.properties 파일에 info의 속성 값들을 정의해 어플리케이션의 정보를 작성할 수 있다.
/actuator/info
URL로 접속할 시 정의한 애플리케이션의 정보를 확인할 수 있다.
가동중인 애플리케이션의 상태를 확인할 수 있다.
스프링 컨테이너에 등록된 스프링 빈의 전체 목록을 표시할 수 있다.
스프링 부트의 자동설정 조건 내역을 확인하기 위한 엔드포인트
스프링 환경변수 정보 확인 시 사용
application.properties 파일 변수와 OS,JVM의 환경변수도 함께 표시된다.
애플리케이션 로깅 레벨 수준이 어떻게 설정됐는지 확인
개발자의 요구사항에 맞는 커스텀 기능 설정 역시 제공한다.
액추에이터에서 제공하는 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에서만 사용하는 것으로 제한하는 어노테이션