본문 바로가기

Zerobase/북 스터디

스프링 부트 핵심 가이드(장정우 지음) ch.11

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 액추에이터에 커스텀 기능 만들기

액추에이터는 다양한 정보를 가공해서 제공한다. 그 밖에 개발자의 요구사항에 맞춘 커스텀 기능 설정도 제공한다. 커스텀 기능을 개발하는 방식에는 크게 두 가지가 있다. 첫 번째는 기존 기능에 내용을 추가하는 방식이고, 두 번째는 새로운 엔드포인트를 개발하는 방식이다.