Development Logs/Spring Ecosystem

[Spring Boot] Spring Boot에서 Actuator 설정

유뱅유뱅뱅 2024. 11. 3. 17:30
  • Spring Boot Actuator 설정을 위해 필요한 지식을 정리한 글입니다.

 

1. Spring Boot Actuator란?

  • Spring Boot Actuator는 Spring Boot 기반의 애플리케이션에서 모니터링 및 관리를 위한 기능을 제공하는 라이브러리와 모듈의 집합입니다.
  • Spring Boot Actuator는 애플리케이션을 운영 및 모니터링하기 위한 API를 제공하고, HTTP 또는 JMX를 통해 엔드포인트를 노출시켜 중요한 정보를 조회하고 수정할 수 있도록 합니다.

 

2. Spring Boot Actuator 주요 기능 및 엔드포인트

  1. /actuator/health: 애플리케이션의 건강 상태를 확인합니다. 이 엔드포인트는 애플리케이션의 상태를 간단하게 확인할 수 있습니다. 예를 들어, "UP" 또는 "DOWN"과 같은 상태를 반환합니다.
  2. /actuator/info: 애플리케이션에 관한 추가 정보를 제공합니다. 예를 들어, 버전 정보나 환경 설정 정보를 표시할 수 있습니다.
  3. /actuator/metrics: 메트릭 정보를 얻기 위한 엔드포인트입니다. 여러 가지 메트릭 데이터를 조회하고, 모니터링할 수 있습니다.
  4. /actuator/env: 환경 설정과 프로퍼티 값을 조회합니다.
  5. /actuator/loggers: 로그 레벨을 변경하고, 현재의 로그 설정을 확인할 수 있습니다.
  6. /actuator/trace: 최근 HTTP 요청의 추적 정보를 확인합니다.
  7. /actuator/dump: JVM 스레드 덤프와 힙 덤프를 생성하고 다운로드할 수 있습니다.
  8. /actuator/threaddump: 현재 실행 중인 스레드의 스레드 덤프를 생성합니다.
  9. /actuator/heapdump: JVM 힙 덤프를 생성하고 다운로드할 수 있습니다.
  10. /actuator/shutdown: 애플리케이션을 종료합니다. 보안을 위해 별도로 활성화해야 합니다.
  11. 사용자 정의 엔드포인트: 필요한 경우 사용자 정의 엔드포인트를 만들어 추가할 수 있습니다.

 

3. Spring Boot Actuator 설정

  1. pom.xml에 의존성 추가 (maven)
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 엔드포인트 활성화

  • application.yml 파일에 설정
    • base-path : 기본 주소는 /actuator로 시작하나 다른것으로 바꾸고 싶을때 사용한다.
    • include : 전체를 포함시키려면 “*“를 사용하고, 특정 엔드포인트를 포함시키려면 위의 엔드포인트를 참고하여, 아래와 같이 추가하면된다.
    • exclude : 제외시키고 싶은 엔드포인트가 있을시 사용한다.
    • 그외..
management:
  endpoints:
    web:
      exposure:
        include: health, info, metrics

 

4. Spring Boot Actuator 중 Health check의 쓰임

  • AWS EC2에서 제공하는 로드 밸런서(유형: Application)는 각 Application이 살아있는지 확인하기위해, Application을 계속 호출해본다.
  • 이때, 해당 Application에서 HTTP 또는 HTTPS 프로토콜을 제공하는 경우, 로드 밸런서는 주기적으로 Application을 호출해서 Healthy인지 UnHealthy인지 확인하게된다.
    • HealthCheckPath 설정을 통해 Healthy인지 확인 가능하나, 별도 설정이 없다면 기본값이 /이 Healthy인 Case이다.
    • 상태값이 200-499까지 Matcher 설정을 통해 Healthy라고 할 수 있으나, 별도 설정이 없다면, 기본값인 200이 Healthy인 Case이다.
    • 따라서, application 호출시, 인증 등의 기능을 넣게 되면 401 등의 상태값이 나올수 있는데, 이런 경우에 HealthCheckPath를 수정하여 /actuator/health 로 수정하게 된다면, 로드밸런서는 Healthy 상태가 될 수 있다.