본 글은 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를 사용할 때 주의해야 할 사항은 다음과 같습니다:
- 보안 설정
- 인증 및 권한 부여를 통해 민감한 엔드포인트 보호.
- 네트워크 접근 제어를 통해 특정 IP만 접근 가능하도록 설정.
- 필요 없는 엔드포인트는 비활성화하거나 노출을 제한.
- 성능 이슈
- 메트릭스 수집 주기를 조정하고, 필요한 메트릭스만 활성화.
- 커스텀 엔드포인트는 성능에 미치는 영향을 고려하여 설계.
- 민감한 데이터 관리
- /env와 같은 엔드포인트에서 민감한 정보가 노출되지 않도록 관리.
- 커스텀 엔드포인트 추가 시 민감한 정보를 마스킹하거나 필터링.
- 로깅 및 모니터링
- 주기적인 헬스 체크와 메트릭스 접근으로 인한 로그 과다를 관리.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.20 - Referer헤더란❓ (0) | 2024.08.20 |
---|---|
[TIL, 일일 회고] 2024.08.19 - 출처란 무엇일까❓ (0) | 2024.08.19 |
[TIL, 일일 회고] 2024.08.17 - 소프트웨어 테스트의 종류 (0) | 2024.08.17 |
[TIL, 일일 회고] 2024.08.16 - 배포의 종류 (0) | 2024.08.16 |
[TIL, 일일 회고] 2024.08.15 - CI/CD란 무엇일까❓ (0) | 2024.08.15 |