11장: 액추에이터 활용하기
11-2 엔드포인트
액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로이다. 스프링 부트에는 여러 내장 엔드포인트가 포함돼 있으며, 커스텀 엔드포인트를 추가할 수도 있다. 액추에이터를 추가하면 기본적으로 엔드포인트 URL로 /actuator가 추가되며 이 뒤에 경로를 추가해 상세 내역에 접근한다. 만약 다른 경로를 사용하고 싶다면 application.properties 파일에 작성한다.
액추에이터의 기본 엔드포인트 리스트
ID | 설명 |
auditevents | 호출된 Audit 이벤트 정보를 표시한다. AuditEventRepository 빈이 필요하다. |
beans | 애플리케이션에 있는 모든 스프링 빈 리스트를 표시한다. |
caches | 사용 가능한 캐시를 표시한다. |
conditions | 자동 구성 조건 내역을 생성한다. |
configprops | @ConfigurationProperties의 속성 리스트를 표시한다. |
env | 애플리케이션에서 사용할 수 있는 환경 속성을 표시한다. |
health | 애플리케이션의 상태 정보를 표시한다. |
httptrace | 가장 최근에 이뤄진 100건의 요청 기록을 표시한다. HttpTraceRepository 빈이 필요하다. |
info | 애플리케이션의 정보를 표시한다. |
integrationgraph | 스프링 통합 그래프를 표시한다. spring-integration-core 모듈에 대한 의존성을 추가해야 동작한다. |
loggers | 애플리케이션의 로거 구성을 표시하고 수정한다. |
metrics | 애플리케이션의 메트릭 정보를 표시한다. |
mapping | 모든 @RequestMapping의 매핑 정보를 표시한다. |
quartz | Quartz 스케줄러 작업에 대한 정보를 표시한다. |
scheduledtasks | 애플리케이션에서 예약된 작업을 표시한다. |
sessions | 스프링 세션 저장소에서 사용자의 세션을 검색하고 삭제할 수 있다. 스프링 세션을 사용하는 서블릿 기반 웹 애플리케이션이 필요하다. |
shutdown | 애플리케이션을 정상적으로 종료할 수 있다. 기본값은 비활성화 상태이다. |
startup | 애플리케이션이 시작될 때 수집된 시작 단계 데이터를 표시한다. BufferingApplicationStartup으로 구성된 스프링 애플리케이션이 필요하다. |
threaddump | 스레드 덤프를 수행한다. |
Spring MVC, Spring WebFlux에서 추가로 사용할 수 있는 엔드포인트
ID | 설명 |
heapdump | 힙 덤프 파일을 반환한다. 핫스팟(HotSpot) VM 상에서 hprof 포맷의 파일이 반환되며, OpenJ9 JVM에서는 PHD 포맷 파일을 반환한다. |
jolokia | Jolokia가 클래스패스에 있을 때 HTTP를 통해 JMX 빈을 표시한다. jolokia-core 모듈에 대한 의존성 추가가 필요하며, WebFlux에서는 사용할 수 없다. |
logfile | logging.file.name 또는 logging.file.path 속성이 설정돼 있는 경우 로그 파일의 내용을 반환한다. |
Prometheus | Prometheus 서버에서 스크랩할 수 있는 형식으로 메트릭을 표시한다. micrometer-registry-prometheus 모듈의 의존성 추가가 필요하다. |
액추에이터 설정을 통해 기능 활성화/비활성화가 아니라 엔드포인트 노출 여부만 설정하는 것도 가능하다.
엔드포인트 노출 설정 기본값
ID | JMX | WEB |
auditevents | O | X |
beans | O | X |
caches | O | X |
conditions | O | X |
configprops | O | X |
env | O | X |
flyway | O | X |
health | O | O |
heapdump | 해당 없음 | X |
httptrace | O | X |
info | O | X |
integrationgraph | O | X |
jolokia | 해당 없음 | X |
logfile | 해당 없음 | X |
loggers | O | X |
liquibase | O | X |
metrics | O | X |
mappings | O | X |
Prometheus | 해당 없음 | |
quartz | O | X |
scheduledtasks | O | X |
sessions | O | X |
shutdown | O | X |
startup | O | X |
threaddump | O | X |
11-3-1 애플리케이션 기본 정보(/info)
액추에이터의 /info 엔드포인터를 활용하면 가동 중인 애플리케이션의 정보를 볼 수 있다. 제공하는 정보의 범위는 애플리케이션에서 몇 가지 방법을 거쳐 제공할 수도 있으나 applicaion.properties 파일에 'info.'로 시작하는 속성 값들을 정의하는 것이 가장 쉬운 방법이다.
11-3-2 애플리케이션 상태(/health)
/health 엔드포인트를 활용하면 애플리케이션의 상태를 확인할 수 있다. 별도의 설정 없이 http://localhost:8080/actuator/health URL에 접근하면 결과를 확인할 수 있다.
status 속성
- UP
- DOWN
- UNKNOWN
- OUT_OF_SERVICE
상세 상태 설정 show-details 속성
- never(기본값): 세부 사항은 표시하지 않는다.
- when-authorized: 승인된 사용자에게만 세부 상태를 표시한다. 확인 권한은 application.properties에 추가한 management.endpoint.health.roles 속성으로 부여할 수 있다.
- always: 모든 사용자에게 세부 상태를 표시한다.
11-3-3 빈 정보 확인(/beans)
액추에이터의 /beans 엔드포인터를 사용하면 스프링 컨테이너에 등록된 스프링 빈의 전체 목록을 표시할 수 있다. 이 엔드포인트는 JSON 형식으로 빈의 정보를 반환한다.
11-3-4 스프링 부트의 자동설정 내역 확인(/conditions)
스프링 부트의 자동설정(AutoConfiguration) 조건 내역을 확인하려면 '/conditions' 엔드포인트를 사용한다. http://localhost:8080/actuator/conditions UR:에 접근하면 결과를 확인할 수 있다.
11-3-5 스프링 환경변수 정보(/env)
/env 엔드포인트는 스프링의 환경변수 정보를 확인하는 데 사용된다. 기본적으로 application.properties 파일의 변수들이 표시되며, OS, JVM의 환경변수도 함께 표시된다. http://localhost:8080/actuator/env URL에 접근하면 결과를 확인할 수 있다.
11-3-6 로깅 레벨 확인(/loggers)
애플리케이션의 로깅 레벨 수준이 어떻게 설정돼 있는지 확인하려면 /loggers 엔드포인트를 사용할 수 있다. http://localhost:8080/actuator/loggers URL에 접근하면 결과를 확인할 수 있다.
11-4 액추에이터에 커스텀 기능 만들기
액추에이터는 다양한 정보를 가공해서 제공한다. 그 밖에 개발자의 요구사항에 맞춘 커스텀 기능 설정도 제공한다. 커스텀 기능을 개발하는 방식에는 크게 두 가지가 있다. 첫 번째는 기존 기능에 내용을 추가하는 방식이고, 두 번째는 새로운 엔드포인트를 개발하는 방식이다.
'Zerobase > 북 스터디' 카테고리의 다른 글
스프링 부트 핵심 가이드(장정우 지음) ch.13 (0) | 2023.08.13 |
---|---|
스프링 부트 핵심 가이드(장정우 지음) ch.12 (0) | 2023.08.06 |
스프링 부트 핵심 가이드(장정우 지음) ch.10 (0) | 2023.08.01 |
스프링 부트 핵심 가이드(장정우 지음) ch.9 (0) | 2023.07.23 |
스프링 부트 핵심 가이드(장정우 지음) ch.8 (0) | 2023.07.16 |