728x90

 

본 글은 Spring boot Actuator에 대해서 공부한 지식을 정리한 글입니다.

 

Spring boot Actuator란❓

Spring Boot Actuator는 애플리케이션의 운영 상태모니터링하고 관리할 수 있는 다양한 엔드포인트를 제공합니다.

 

예를 들어, 애플리케이션이 정상적으로 작동하는지 확인할 수 있는 헬스 체크, 현재 메모리 사용량을 확인할 수 있는 메트릭스, 그리고 환경 변수설정 속성을 볼 수 있는 정보 엔드포인트 등을 제공합니다.

 

Actuator는 애플리케이션의 상태를 확인하거나 메트릭스 데이터를 수집하고, 환경 정보나 구성 정보를 노출하는 등의 기능을 손쉽게 사용할 수 있습니다.

 

 

Spring boot Actuator의 주요 엔드포인트

Actuator는 기본적으로 여러 엔드포인트를 제공합니다. 이러한 엔드포인트는 /actuator 경로 하위에 위치하며, 각각의 엔드포인트는 다양한 정보를 제공합니다.

 

health

  • 애플리케이션의 건강 상태를 보여줍니다.
  • 기본적으로 "UP" 또는 "DOWN" 상태를 반환하며, 데이터베이스 연결 상태, 외부 시스템 연결 상태 등을 추가적으로 포함할 수 있습니다.

metrics

  • 애플리케이션의 메트릭스를 제공합니다.
  • CPU 사용량, 메모리 사용량, HTTP 요청 처리 시간 등 다양한 성능 지표를 확인할 수 있습니다.

info

  • 애플리케이션의 빌드 정보기타 사용자 정의 정보를 노출할 수 있습니다.

env

  • 현재 애플리케이션의 환경 변수설정 속성을 보여줍니다.

loggers

  • 로깅 설정을 확인하고, 런타임 중에 로그 레벨을 동적으로 변경할 수 있습니다.

beans

  • 애플리케이션 컨텍스트에 있는 빈 목록을 확인합니다.

threaddump

  • 스레드 덤프를 확인합니다.

httptrace

  • 최근 HTTP 요청 및 응답을 추적합니다.

 

Spring boot Actuator 설정

Actuator를 사용하려면 spring-boot-starter-actuator 의존성을 추가해야 합니다

1. 의존성 추가(Gradle)

implementation 'org.springframework.boot:spring-boot-starter-actuator'

 

 

2. Actuator 엔드포인트 설정

기본적으로 Actuator최소한의 엔드포인트만 노출합니다.

 

모든 엔드포인트 활성화

management.endpoints.web.exposure.include=*

 

모든 엔드포인트를 활성화하려면 위와 같이 application.properties파일이나 application.yml 파일을 수정해야 합니다.

 

특정 엔드포인트 설정

management.endpoints.web.exposure.include=health,info

 

 

Spring boot Actuator 엔드포인트 탐색

 

management.endpoint.health.show-details 옵션은 Spring Boot Actuator에서 health 엔드포인트상세 정보를 얼마나 노출할지 설정하는 데 사용됩니다.

 

  • never
    • 기본값으로, 인증되지 않은 사용자는 헬스 체크의 상태 정보만 볼 수 있습니다.
    • 세부 정보(예: 특정 구성 요소의 상태)는 숨겨집니다.
  • when_authorized
    • 인증된 사용자는 헬스 체크의 세부 정보를 볼 수 있지만, 인증되지 않은 사용자볼 수 없습니다.
    • Spring Security가 설정된 경우에만 이 옵션이 의미가 있습니다.
  • always
    • 모든 사용자에게 헬스 체크의 세부 정보를 보여줍니다.
    • 인증 여부와 상관없이 애플리케이션의 구성 요소 상태를 포함한 전체 헬스 정보를 노출합니다.

 

 

포트를 8080으로 지정했기 때문에 localhost:8080/actuator로 접속해 보면 위와 같이 다양한 엔드포인트가 있습니다.

 


Spring Boot Actuator는 애플리케이션의 상태를 모니터링하고 관리하기 위한 강력한 도구지만, 잘못 설정하거나 관리하면 보안 및 성능에 문제가 발생할 수 있습니다.

 

Spring Boot Actuator를 사용할 때 주의해야 할 사항은 다음과 같습니다:

  1. 보안 설정
    • 인증 및 권한 부여를 통해 민감한 엔드포인트 보호.
    • 네트워크 접근 제어를 통해 특정 IP만 접근 가능하도록 설정.
    • 필요 없는 엔드포인트는 비활성화하거나 노출을 제한.
  2. 성능 이슈
    • 메트릭스 수집 주기를 조정하고, 필요한 메트릭스만 활성화.
    • 커스텀 엔드포인트는 성능에 미치는 영향을 고려하여 설계.
  3. 민감한 데이터 관리
    • /env와 같은 엔드포인트에서 민감한 정보가 노출되지 않도록 관리.
    • 커스텀 엔드포인트 추가 시 민감한 정보를 마스킹하거나 필터링.
  4. 로깅 및 모니터링
    • 주기적인 헬스 체크와 메트릭스 접근으로 인한 로그 과다를 관리.