본문 바로가기

개발(합니다)/Java&Spring

[spring boot 설정하기-11] actuator 설정 및 테스트 소스

반응형

서비스를 하다보면 각 인스턴스에 대한 CPU, memory, Heap 등을

개별 모니터링하기보다는 한 곳에서 확인할 수 있는 기능을 제공해줍니다.

actuator는 endpoint를 이용해 응용 프로그램을 확인할 수 있습니다.

 

각 endpoint는 http 또는 jmx를 통해 활성화와 비활성화를 할 수 있습니다.

 

기본적으로 /actuator 로 매핑되며 endpoint는 /actuator/health에 매핑됩니다.

 

관련 내용은 아래 사이트에서 확인해볼 수 있습니다.

docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html

www.baeldung.com/spring-boot-actuators

 


1. endpoint

어디서든 사용 가능한 endpoint

ID 설명

auditevents

어플리케이션의 인증 등을 이벤트로  감지해서 표시합니다.

beans

빈 정보들을 표시합니다.

caches

사용 가능한 캐시를 표시합니다.

conditions

구성 및 자동 클래스에서 평가된 조건과 일치하지 않거나 일치하는 이유를 표시합니다.

configprops

프로퍼티의 빈이 어떻게 주입되어 있는지 표시합니다.

env

환경 프로퍼티를 표시합니다.

flyway

flyway의 마이그레이션 정보를 표시합니다.

health

어플리케이션의 상태 정보를 표시합니다.

httptrace

HTTP 추적 정보(기본적으로 마지막 100개의 HTTP 요청-응답-교환)를 표시합니다. HttpTraceRepository가 필요합니다.

info

어플리케이션의 정보를 표시합니다.

integrationgraph

스프링 통합 그래프를 표시합니다. 스프링 통합 코어에 대한 의존성이 필요합니다.

loggers

어플리케이션의 로그 설정 정보를 표시합니다.

liquibase

liquibase의 마이그레이션 정보를 표시합니다.

metrics

메모리, 클래스 로더, http 요청 횟수, 마지막 요청의 걸린 시간 등의 매트릭 정보를 표시합니다.

mappings

URI 경로와 해당 경로를 포함한 컨트롤러의 매핑 정보를 표시합니다.

scheduledtasks

프로그램에서 스케줄링 된 작업을 표시합니다.

sessions

Spring 세션 저장소에서 사용자 세션을 검색하고 삭제할 수 있습니다. Spring Session을 사용하는 서블릿 기반 웹 애플리케이션이 필요합니다.

shutdown

어플리케이션을 종료합니다.(켜놓으면 위험하니 권한을 admin으로 하길 권장한다.)

startup

응용 프로그램 시작에서 수집한 시작 단계 데이터를 표시합니다. 버퍼링 응용 프로그램 시작을 사용하여 Spring 응용 프로그램을 구성해야 합니다.

threaddump

스레드 덤프를 수행합니다.

Spring MVC, SPring WebFlux에서 추가로 사용할 수 있는 endpoint

ID 설명

heapdump

hprof 힙 덤프 파일을 반환합니다.

jolokia

HTTP를 통해 JMX bean을 노출합니다. (Jolokia가 클래스 경로에 있을 때, WebFlux에서는 사용할 수 없습니다. jolokia 코어에 대한 의존성이 필요합니다.

logfile

로그 파일의 내용을 반환합니다. (logging.file.name 또는 logging.file.path 속성된 경우).
HTTP 범위 헤더를 사용하여 로그 파일 내용의 일부를 검색합니다.

prometheus

Prometheus 서버가 스크랩할 수 있는 형식으로 메트릭을 표시합니다. 
micrometer-registry-prometheus을 의존해야 합니다.

2. 의존성 추가

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

 

 

3. application.yml 설정

주의사항

- management.endpoints.web.exposure.include="*"로 설정하면

모든 정보를 노출하게 되어 외부 접근이 가능해서 중요한 정보를 노출할 수 있습니다.

이를 위해 보안 적용을 해야합니다.

1. actuator는 endpoint가 '/actuator'이며 이를 management.endpoints.web.base-path를 이용하여 임의의 경로로 변경

2. health check시 사용하는 /health endpoint를 사용하기 위해 endpoint.health.show-details=always를 설정

3. management.server.port나 management.server.address 값을 수정

4. spring-security를 이용하여 management.endpoints.web.base-path(/actuator)의 권한 확인

- 기존 security와 사용할 경우 @Order로 순서를 지정해주어야 합니다.

docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#features.security.actuator


management:
  endpoints:
    web:
      exposure: ## Http상에서 endpoint 공개하는 방법
        include: '*'
#    enabled-by-default: false
  endpoint:
    shutdown:
      enabled: true
#    info: ## endpoint 활성화 및 비활성화 방법
#      enabled: true

4. /actuator 조회

 

반응형