Spring Boot Actuator

서비스 배포도 해보고 배포 자동화까지 해보았다.

이제 서비스가 원활하게 돌아가는지 확인할 수 있도록 모니터링을 적용해보려 한다.

Spring Boot Actuator에서는 CPU 사용율, 커넥션풀과 같은 애플리케이션 정보와 HTTP 요청 횟수 같은 메트릭 정보를 제공한다.

이 글에서는 Spring Boot Actuator로 메트릭을 확인하는 방법을 적어두려 한다.


사용 기술

  • Spring Boot 3.2.4 / gradle-kotlin
  • Java 17
  • Spring Boot Actuator

써보기

최종적으로는 스프링부트 애플리케이션에 의존성을 추가하고 로컬에서 프로메테우스와 그라파나를 설치하고 사용해볼 것이다.

이번 글에서는 스프링부트 액추에이터를 써보기까지만 한다.

순서는 아래와 같다.

  1. 스프링부트 액추에이터 의존성 추가
  2. 엔드포인트 활성화 및 노출
  3. 액추에이터가 제공하는 데이터 확인

1. 의존성 추가

아래처럼 스프링부트 액추에이터의 의존성을 추가해준다.

// build.gradle.kts
// 모니터링
implementation("org.springframework.boot:spring-boot-starter-actuator")

 

의존성을 추가해주면 "/actuator" 경로로 들어가면 아래와 같은 JSON 결과 값을 확인할 수 있다.


2. 엔드포인트 활성화 / 노출

스프링부트 액추에이터의 메트릭을 이용하려면 기본적으로 아래 두가지를 해줘야한다.

  • 엔드포인트 활성화
  • 엔드포인트 노출 

스프링부트 액추에이터 의존성을 추가하면 기본적인 엔드포인트들은 활성화가 된다.

이제 스프링부트 액추에이터가 제공하는 메트릭을 활용할 수 있게 엔드포인트 활성화와 노출을 해보자.

아래처럼 application.yml을 설정 해준다.

// application.yml
... 생략
server:
  tomcat:
    mbeanregistry:
      enabled: true         // tomcat 관련 정보를 노출
management:
  endpoint:
    health:
      show-details: always  // health 엔드포인트 상세 정보 출력
  endpoints:
    web:
      exposure:
        include: "*"        // 엔드포인트 노출
... 생략

 

management.endpoints.web.exposure.include: "*" 옵션으로 엔드포인트를 노출하면

아래처럼 애플리케이션 정보와 메트릭 지표를 확인할 수 있다.


3. 액추에이터가 제공하는 데이터 확인

3-1. 애플리케이션 정보 확인

3-2. 메트릭 지표 확인


Spring Boot Actuator와 보안

이렇게 많은 메트릭을 퍼블릭하게 열어두면 악용의 소지가 있다.

따라서 아래처럼 application.yml 파일에 메트릭을 확인할 포트 번호를 지정할 수 있다.

서비스 중인 애플리케이션 서버의 포트와 다른 포트를 이용하여 Nginx 등으로 내부망에서만 접근 가능하도록 하거나

같은 포트를 사용한다면 필터나 스프링 시큐리티 등을 이용하여 권한이 있는 사용자만 접근하도록 한다.

// application.yml
management:
  server:
    port: 9090         // 액추에이터 포트 번호 지정
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"

 

 

참고자료

 

스프링 부트 - 핵심 원리와 활용 | 김영한 - 인프런

김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다.  [임베딩 영상] 김영한의 스

www.inflearn.com

 

+ Recent posts