프로덕션 준비
액츄에이터
gradle
implementation 'org.springframework.boot:spring-boot-starter-actuator'
실행
엔드포인트 설정
엔드포인트란 같은 URL에서도 다른 요청을 하게끔 구별하게 해주는 항목
액추에이터에서 엔드포인트 설정 2가지 과정
대부분의 엔드포인트는 활성화되어 있음 노출이 되지 않았을 뿐(shutdown 기능은 예외적으로 비활성화)
모든 엔드포인트를 노출하는 설정
모두 노출하지만 그중 env, beans 노출하지 않는 경
기본적으로 활성화되지 않은 shutdown 활성화
모두 활성화하여 설정 없이 작동할 때 보지 못한 기능들 확인 가능(기본적으로 shutdown을 제외하고는 활성화는 되어있음)
엔드포인트 종류
엔드포인트 참조: https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints
health endpoint
health의 status는 컴포넌트 중 하나라도 문제가 생기면 **‘DOWN’**상태
기본적인 활성화만 한다면 현재 서버가 응답 가능한 상태인지 나타냄
show-details: always
하면 좀 더 상세한 정보 확인 가능
show-components: always
옵션을 적용하면 상세한 정보없이 각 컴포넌트 상태만 조회 가능
info endpoint
java: 자바 런타임 정보
os: OS 정보
env: Environment에서 info.로 시작하는 정보
build
git
기본적으로 java, env, os는 비활성화
info 커스텀시 참고: https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints.info.writing-custom-info-contributors
logger endpoint
http://localhost:8080/actuator/loggers/{패키지명}
**
GET방식으로 해당 URL요청하면 해당 패키지 로깅 레벨 확인 가능
POST방식으로 요청하는 경우 해당 패키지의 로깅레벨을 일식적으로 변경 가능
body에 configuredLevel을 넘겨줘야 변경 가능(변경 성공 → 204응답)
HttpExchanges endpoint
setCapacity()
**로 최대개수 조절 가능액츄에이터 보안
액츄에이터가 많은 정보를 제공하므로 외부에 공개되는 것은 보안상 좋지 않음
내부망에서 접근하는 등의 방법 필요
다른 포트에서의 실행
management.server.port
**를 통해 설정엔드포인트 경로 변경