본문 바로가기
Spring/Spring Boot

Spring Boot Actuator 를 활용한 모니터링

by Rayner 2021. 2. 5.
728x90

상용 서비스를 목적으로 개발하는 어플리케이션은 비즈니스 로직을 처리하는 기능적 요구사항 뿐만 아니라 다양한 비기능적 요구사항이 존재합니다. 그 중에서도 어플리케이션의 상태를 모니터링하고 관리하는 기능은 시스템 운영과 신뢰성있는 서비스 제공 측면에서 매우 중요한 요소입니다. Spring Boot의  Actuator 를 적용하면 서비스 상용화를 위한 모니터링 기능을 쉽게 구축할 수 있습니다. 

 

Spring Boot Actuator 활성화

 

Spring Boot 에서 spring-boot-actuator 라는 모듈을 활성화는 방법은 프로젝트 빌드를 위한 설정 파일에 의존성을 추가하는 것입니다. Maven 프로젝트라면 pom.xml 파일에 아래와 같이 dependency를 추가하면 됩니다.

 

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

 

Spring Boot Actuator 확인

 

spring-boot-actuator 모듈을 추가한 후에 빌드하고 어플리케이션을 실행하고 actuator의 endpoint를 브라우저나 postman에서 호출하면 아래와 같은 결과가 나타납니다.

 

http://localhost:8080/actuator

 

http://localhost:8080/actuator 호출 결과
http://localhost:8080/actuator/health 호출 결과

 

별도로 actuator 설정을 변경하지 않고 호출하면 /health, /health/{*path}, /info 3개의 endpoint가 보입니다. 어플리케이션의 헬스체크를 위해서 호출 시 살아있다는 메시지를 응답하는 기능을 만들어 달라는 요구사항을 받은 경험이 있으신가요? /health 가 바로 그 역할을 수행합니다.

/health 처럼 상용 서비스 수준에서 필요로 할 모니터링 기능을 미리 만들어서 제공하는 것이 바로 spring-boot-actuator 입니다.

 

Endpoint 활성화

 

Actuator가 제공하는 모든 endpoint는 spring 사이트를 참고하시기 바랍니다. 어플리케이션을 종료할 수 있는  Shutdown 을 제외한 모든 endpoint 는 기본으로 활성화되어 있습니다. 만약, Shutdown을 활성화하려면 application.yml 파일에 아래와 같이 설정을 추가합니다.

 

management:
  endpoint:
    shutdown:
      enabled: true

 

Endpoint를 활성화 후에는 JMX 또는 Web 에서 조회 가능하도록 하는 설정도 필요합니다. 이 설정도 application.xml에 추가할 수 있습니다. 아래 예제는 shutdown 과 startup 을 제외하고 모든 endpoint를 Web 화면에서 모니터링할 수 있도록 정의하는 구문입니다. 시스템의 중요한 정보를 Web 화면에서 조회 가능하도록 노출하는 설정은 보안 취약점이 될 수 있으니 실제 적용 시에는 주의하시기 바랍니다. 

 

management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: "shutdown, startup"

 

728x90

댓글