[java] Spring Boot Actuator를 사용한 애플리케이션 모니터링

Spring Boot Actuator는 Spring Boot 애플리케이션의 모니터링을 쉽게 구현할 수 있도록 도와주는 모듈입니다. 이 모듈을 사용하면 애플리케이션의 상태, 건강 상태, 메트릭 등을 쉽게 수집하고 모니터링할 수 있습니다. 이 글에서는 Spring Boot Actuator를 사용하여 애플리케이션을 모니터링하는 방법에 대해 알아보겠습니다.

Actuator 설정하기

Spring Boot Actuator를 사용하기 위해서는 spring-boot-starter-actuator 모듈을 의존성으로 추가해야 합니다. pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Actuator의 기능 중에서 활성화하고자 하는 기능들은 application.properties 또는 application.yml 파일에 설정하여 활성화할 수 있습니다. 예를 들어 /actuator 엔드포인트를 사용하고 싶을 경우 다음과 같이 설정합니다.

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

Actuator 엔드포인트 사용하기

Actuator는 /actuator 경로를 통해 여러 가지 엔드포인트를 제공합니다. 예를 들어 /actuator/health 엔드포인트를 통해 애플리케이션의 건강 상태를 확인할 수 있습니다. 브라우저나 cURL을 사용하여 다음과 같이 요청하면 건강 상태 정보를 확인할 수 있습니다.

curl http://localhost:8080/actuator/health

/actuator/metrics 엔드포인트를 통해 애플리케이션의 메트릭 정보를 확인할 수도 있습니다. 예를 들어 jvm.memory.used 메트릭의 값을 확인하려면 다음과 같이 요청합니다.

curl http://localhost:8080/actuator/metrics/jvm.memory.used

Actuator는 다양한 엔드포인트와 그에 해당하는 기능을 제공합니다. 자세한 내용은 공식 문서를 참고하시기 바랍니다.

커스텀 엔드포인트 추가하기

Actuator는 기본적으로 제공하는 엔드포인트 외에도 사용자가 직접 커스텀 엔드포인트를 추가할 수 있습니다. 커스텀 엔드포인트는 @Endpoint 애노테이션을 사용하여 정의하고, 해당 엔드포인트의 기능은 @ReadOperation, @WriteOperation, @DeleteOperation 애노테이션을 사용하여 정의합니다.

예를 들어, “hello”라는 이름의 커스텀 엔드포인트를 추가하려면 다음과 같이 코드를 작성합니다.

@Endpoint(id = "hello")
public class HelloEndpoint {

    @ReadOperation
    public String hello() {
        return "Hello, World!";
    }
}

위의 코드에서는 /actuator/hello 엔드포인트를 추가하고, 해당 엔드포인트에 접근하면 “Hello, World!”라는 문자열을 반환합니다.

Actuator는 커스텀 엔드포인트의 경로를 /actuator 하위에 추가합니다. 따라서 위의 예제에서는 /actuator/hello 엔드포인트에 접근해야 합니다.

결론

Spring Boot Actuator를 사용하면 Spring Boot 애플리케이션의 모니터링을 간편하게 구현할 수 있습니다. Actuator는 다양한 엔드포인트를 제공하며, 필요에 따라 커스텀 엔드포인트를 추가할 수도 있습니다. 이를 통해 애플리케이션의 상태와 건강 상태, 메트릭 등을 실시간으로 모니터링하고 관리할 수 있습니다.

참고 문서: