| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- queue
- 핵심가이드
- ORM
- 백엔드스쿨
- JPA
- 프로그래머스
- 개발자
- QueryDSL
- SpringBoot
- TestCode
- spring boot
- 스프링부트
- 컴퓨터 공학
- 서버
- SpringSecurity
- JWT
- 컴퓨터 구조
- LinkedList
- 백엔드
- 백준
- actuator
- 백엔드공부
- Java
- error
- array
- 제로베이스
- spring
- 자료구조
- 연관관계
- restTemplate
Archives
- Today
- Total
be_better
[Springboot] 액추에이터 활용하기 - 엔드포인트 본문
목차
애플리케이션을 개발하는 단계를 지나 운영 단계에 접어들면 애플리케이션이 정상적으로 동작하는지 모니터링하는 환경을 구축하는 것이 매우 중요해진다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.
액추에이터 종속성 추가
새로운 프로젝트를 생성하고 의존성을 추가한다.
spring-boot-starter-actuator 의존성 추가
// gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
// maven
<dependencies>
..생략..
<dependency>
<groupId>org.springframework.book</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
..생략..
<dependencies>
엔드포인트
액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로이다. 스프링 부트에는 여러 내장 엔드포인트가 포함되어 있으며, 커스텀 엔드포인트를 추가할 수도 있다. 액추에이터를 추가하면 기본적으로 엔드포인트 URL로 /actuator가 추가되며 이 뒤에 경로를 추가해 상세 내역에 접근한다. 만약 /actuator 경로가 아닌 다른 경로를 사용하고 싶다면 application.yml 파일에 작성한다.
액추에이터 엔드포인트의 기본 경로 변경
management:
endpoint:
web:
base-path: /custom-path
자주 활용되는 액추에이터 기본 엔드포인트는 다음과 같다
- auditevents: 호출된 Audit 이벤트 정보를 표시한다. AuditEventRepository 빈이 필요하다.
- beans: 애플리케이션에 있는 모든 스프링 빈 리스트를 표시한다.
- caches: 사용 가능한 캐시를 표시한다.
- conditions: 자동 구성 조건 내역을 생성한다.
- configprops: @ConfigurationProperties의 속성 리스트를 표시한다.
- env: 애플리케이션에서 사용할 수 있는 환경 속성을 표시한다.
- health: 애플리케이션의 상태 정보를 표시한다.
- httptrace: 가장 최근에 이뤄진 100건의 요청 기록을 표시한다. HttpTraceRepository 빈이 필요하다.
- info: 애플리케이션의 정보를 표시한다.
- integrationgraph: 스프링 통합 그래프를 표시한다. spring-integration-core 모듈에 대한 의존성을 추가해야 동작한다.
- loggers: 애플리케이션의 로거 구성을 표시하고 수정한다.
- metrics: 애플리케이션의 metric 정보를 표시한다.
- mappings: 모든 @RequestMapping의 매핑 정보를 표시한다.
- quartz: Quartz 스케줄러 작업에 대한 정보를 표시한다.
- scheduledtasks: 애플리케이션에서 예약된 작업을 표시한다.
- sessions: 스프링 세션 저장소에서 사용자의 세션을 검색하고 삭제할 수 있다. 스프링 세션을 사용하는 서블릿 기반 웹 애플리케이션이 필요하다.
- shutdown: 애플리케이션을 정상적으로 종료할 수 있다. 기본값을 비활성화 상태
- startup: 애플리케이션이 시작될 때 수집된 시작 단계 데이터를 표시한다. BufferingApplicationStartup으로 구성된 스프링 애플리케이션이 필요하다.
- threaddump: 스데르 덤프를 수행한다.
만약 Spring MVC, Spring WebFlux, Jersey을 사용한다면 추가로 다음과 같은 엔드포인트를 사용할 수 있다.
- 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 모듈의 의존성 추가가 필요하다.
엔드포인트 활성화 여부는 노출 여부를 설정할 수 있다. 활성화는 기능 자체를 활성화할 것인지를 결정하는 것으로, 비활성화된 엔드포인트는 애플리케이션 컨텍스트에서 완전히 제거된다.
application.yml 에 엔드포인트 활성화 추가
## 엔드포인트 활성화
management:
endpoint:
shutdown:
enabled: true
caches:
enabled: false
엔드포인트 노출 설정
## 엔드포인트 노출 설정
management:
endpoint:
## HTTP 설정
web:
exposure:
include: *
exclude: threaddump, heapdump
## JMX 설정
jmx:
exposure:
include: *
exclude: threaddump, heapdump
web과 jmx 환경에서 엔드포인트를 전체적으로 노출하며, threaddump, heapdump 기능은 제외하겠다는 의미
엔트포인트 노출 설정에 대한 기본값은 다음과 같다.

'Springboot > 이론' 카테고리의 다른 글
| [Springboot] 액추에이터 활용하기 - 커스텀 (0) | 2023.11.29 |
|---|---|
| [Springboot] 액추에이터 활용하기 - 액추에이터 기능 (0) | 2023.11.29 |
| [Springboot] 유효성 검사와 예외 처리 - 예외 처리 (0) | 2023.11.28 |
| [Springboot] 유효성 검사와 예외 처리 - 유효성 검사 (0) | 2023.11.28 |
| [Springboot] 연관관계 매핑 - 영속성 전이 (0) | 2023.11.19 |