-
액츄에이터와 액츄에이터 엔드포인트스프링/스프링부트 2023. 10. 1. 13:16
개발이 끝나고 운영 단계에서 실시간 모니터링을 하는 것은 매우 중요한 일이다.
스프링 부트가 제공하는 액츄에이터는 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 기능들을 제공한다.
또한 마이크로미터, 프로메테우스, 그라파나 같은 최근 유행하는 모니터링 시스템과 매우 쉽게 연동할 수 있는 기능도 제공한다.
implementation 'org.springframework.boot:spring-boot-starter-actuator' //actuator 추가
build.gradle에서 액츄에이터를 위와 같이 추가할 수 있다.
application.yml
management: endpoints: web: exposure: include: "*"
appication.yml에 다음과 같이 "*"을 입력하면 actuator의 모든 속성을 확인할 수 있다.
여기서 http://localhost:8080/actuator/beans 등 href 값으로 나와있는 url로 접근하면 해당하는 속성을 볼 수 있다.
http://localhost:8080/actuator/beans 는 스프링에 등록된 빈들을 관찰할 수 있는 액츄에이터 페이지이다.
스프링 빈이 잘 주입되었는지 확인하기 위해서 이전에는 로그를 찍거나 그랬는데, 이제는 액츄에이터 페이지에 접근해서 스프링 빈이 주입되었는지 확인할 수 있다.
health는 헬스 정보(애플리케이션이 잘 살아있는지)를, beans는 스프링 컨테이너에 등록된 빈을 보여준다.
여기서 액츄에이터가 제공하는 기능 하나하나를 엔드포인트라 한다.
http://localhost:8080/actuator/health : 애플리케이션 헬스 정보를 보여준다.
http://localhost:8080/actuator/beans : 스프링 컨테이너에 등록된 빈을 보여준다.엔드포인트 설정
엔드포인트를 사용하기 위한 2가지 과정
- 엔드포인트 활성화 - 해당 기능 자체를 사용할지 말지 on / off 하는 것
- 엔드포인트 노출 - 활성화된 엔드포인트를 HTTP에 노출할지 JMX에 노출할지 선택(둘 다 노출도 가능)
활성화가 off 되어있으면 노출도 되지 않는다.
엔드 포인트트는 대부분 기본으로 활성화 되어있다.
-> 따라서 어떤 엔드포인트를 노출할 지 선택하면 되는데 JXM은 잘 사용되지 않아서 HTTP에 어떤 엔드포인트를 노출할지만 정하면 된다.
application.yml - 모든 엔드포인트를 웹에 노출
management: endpoints: web: exposure: include: "*"
위에서 봤던 것처럼 "*" 옵션으로 모든 엔드포인트를 웹에 노출할 수 있다.
application.yml - shutdown 엔드포인트 활성화
management: endpoint: shutdown: enabled: true endpoints: web: exposure: include: "*"
shutdown이라는 기능은 원래 꺼져있는데 enabled: true를 통해 활성화할 수 있다.
이 기능은 POST 매핑으로 localhost:8080/actuator/shutdown에 접근하면 애플리케이션을 강제로 종료한다.
-> 이거는 해킹 위험이 있기 때문에 진짜 꼭 필요할 경우에만 사용해야 한다.
(management.endpoints는 엔드포인트 전체를 설정할 때, endpoint는 개별을 설정할 때 사용된다.)
application.yml - 모든 엔드포인트를 JMX에 노출
management: endpoints: jmx: exposure: include: "health,info"
웹이 아니라 jmx에 노출하려면 web을 jmx로 바꿔주면 된다.
application.yml - env, beans를 제외한 모든 엔드포인트를 웹에 노출
management: endpoints: web: exposure: include: "*" exclude: "env,beans"
엔드포인트를 노출할 때 제외하고 싶은 엔드포인트가 있다면 exclude로 설정하면 된다.
엔드포인트의 종류들
엔드포인트가 너무 많지만 자주 사용하는 것들 위주로 정리하겠다.
엔드포인트 목록
- beans : 스프링 컨테이너에 등록된 스프링 빈을 보여준다.
- conditions : condition 을 통해서 빈을 등록할 때 평가 조건과 일치하거나 일치하지 않는 이유를 표시한다.
- configprops : @ConfigurationProperties 를 보여준다.
- env : Environment 정보를 보여준다.
- health : 애플리케이션 헬스 정보를 보여준다.
- httpexchanges : HTTP 호출 응답 정보를 보여준다. HttpExchangeRepository 를 구현한 빈을 별도로 등록해야 한다.
- info : 애플리케이션 정보를 보여준다.
- loggers : 애플리케이션 로거 설정을 보여주고 변경도 할 수 있다.
- metrics : 애플리케이션의 메트릭 정보를 보여준다.
- mappings : @RequestMapping 정보를 보여준다.
- threaddump : 쓰레드 덤프를 실행해서 보여준다.
- shutdown : 애플리케이션을 종료한다. 이 기능은 기본으로 비활성화 되어 있다.
여기서 중요하고 가장 많이 사용되는 health , info , loggers , httpexchanges , metrics 는 별도로 포스팅을 할 예정이다.
'스프링 > 스프링부트' 카테고리의 다른 글
애플리케이션 정보 - info (0) 2023.10.01 헬스 정보 - health (0) 2023.10.01 @Profile (0) 2023.09.30 YAML (0) 2023.09.30 @ConfigurationProperties - 외부 설정 사용 (0) 2023.09.30