[Spring Boot] 액추에이터 사용하기
스프링부트 액추에이터 사용하기
액추에이터는 스프링 부트 애플리케이션의 모니터링이나 매트릭(metric)과 같은 기능을 HTTP와 JMX 엔드포인트를 통해 제공한다.
액추에이터 개요
액추에이터는 실행 중인 애플리케이션의 내부를 볼 수 있게 하고, 어느 정도까지는 애플리케이션의 작동 방법을 제어할 수 있게 한다. 예를 들면, 다음과 같다.
* 애플리케이션 환경에서 사용할 수 있는 구성 속성들
* 애플리케이션에 포함된 다양한 패키지의 로깅 레벨(logging level)
* 애플리케이션이 사용 중인 메모리
* 지정된 엔드포인트가 받은 요청 횟수
* 애플리케이션의 건강 상태 정보
스프링 부트 애플리케이션에 액추에이터를 활성화하려면 의존성을 빌드에 추가해야 한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
액추에이터 엔드포인트
HTTP 메서드 | 경로 | 설명 | 디폴트 활성화 |
GET | /auditevents | 호출된 감사(audit) 이벤트 리포트를 생성한다. | NO |
GET | /beans | 스프링 애플리케이션 컨텍스트의 모든 빈을 알려준다. | NO |
GET | /conditions | 성공 또는 실패했던 자동-구성 조건의 내역을 생성한다. | NO |
GET | /configprop | 모든 구성 속성들을 현재 값과 같이 알려준다. | NO |
GET,POST,DELETE | /env | 스프링 애플리케이션에 사용할 수 있는 모든 속성 근원과 이 근원들의 속성을 알려준다. | NO |
GET | /env/{toMatch} | 특정 환경 속성의 값을 알려준다. | NO |
GET | /health | 애플리케이션의 건강 상태 정보를 반환한다. | YES |
GET | /heapdump | 힙(heap) 덤프를 다운로드한다. | NO |
GET | /httptrace | 가장 최근의 100개 요청에 대한 추적 기록을 생성한다. | NO |
GET | /info | 개발자가 정의한 애플리케이션에 관한 정보를 반환한다. | YES |
GET | /loggers | 애플리케이션의 패키지 리스크(각 패키지의 로깅 레벨이 포함된)를 생성한다. | NO |
GET | /loggers/{name} | 지정된 로거의 로깅 레벨(구성된 로깅 레벨과 유효 로깅 레벨 모두)를 반환한다. 유효 로깅 레벨은 HTTP POST 요청으로 설정될 수 있다. | NO |
GET | /mappings | 모든 HTTP 매핑과 이 매핑들을 처리하는 핸들러 메서드들의 내역을 제공한다. | NO |
GET | /metrics | 모든 메트릭 리스트를 반환한다. | NO |
GET | /metrics/{name} | 지정된 메트릭의 값을 반환한다. | NO |
GET | /scheduledtasks | 스케줄링된 모든 태스크의 내역을 제공한다. | NO |
GET | /threaddump | 모든 애플리케이션 스레드의 내역을 반환한다. | NO |
액추에이터의 기본 경로 구성하기
액추에이터의 모든 앤드포인트의 경로에는 /actuator가 앞에 붙는다. 액추에이터의 기본 경로는 management.endpoint.web.base-path 속성을 설정하여 변경할 수 있다.
management:
endpoints:
web:
base-path: /management
액추에이터의 엔드포인트의 활성화와 비활성화
액추에이터를 추가하면 /health 와 /info 엔드포인트만 기본적으로 활성화되는 것을 알 수 있다. 대부분의 액추에이터 엔드포인트는 민감한 정보를 제공하므로 보안 처리가 되어야 하기 때문이다. 물론 스프링 시큐리트를 사용해서 액추에이터를 보완처리할 수 있다. 그러나 액추에이터 자체로는 보안처리가 되어있지 않으므로 엔드포인트가 기본적으로 비활성화되어 있다.
엔드포인트의 노출 여부를 제어할 때는 management.endpoints.web.exposure.include와 management.endpoints.web.exposure.exclude 구성 속성을 사용할 수 있다.
management:
endpoints:
web:
exposure:
include: health, info, beans, conditions
exclude: threaddump, heapdump
'web > Spring' 카테고리의 다른 글
[Spring] 엔티티(Entity) 또는 도메인 객체(Domain Object)와 DTO를 분리해야 하는 이유 (0) | 2022.04.06 |
---|---|
[Spring Data JPA] EntityGraph (0) | 2022.04.04 |
[Spring Boot] Health Check 추가 (0) | 2022.03.31 |
[Spring JPA] IN절 query (0) | 2022.03.30 |
[Spring Boot] Context Path 설정 (1) | 2022.03.29 |
댓글 개