Spring Boot Actuator
서비스 배포도 해보고 배포 자동화까지 해보았다.
이제 서비스가 원활하게 돌아가는지 확인할 수 있도록 모니터링을 적용해보려 한다.
Spring Boot Actuator에서는 CPU 사용율, 커넥션풀과 같은 애플리케이션 정보와 HTTP 요청 횟수 같은 메트릭 정보를 제공한다.
이 글에서는 Spring Boot Actuator로 메트릭을 확인하는 방법을 적어두려 한다.
사용 기술
- Spring Boot 3.2.4 / gradle-kotlin
- Java 17
- Spring Boot Actuator
써보기
최종적으로는 스프링부트 애플리케이션에 의존성을 추가하고 로컬에서 프로메테우스와 그라파나를 설치하고 사용해볼 것이다.
이번 글에서는 스프링부트 액추에이터를 써보기까지만 한다.
순서는 아래와 같다.
- 스프링부트 액추에이터 의존성 추가
- 엔드포인트 활성화 및 노출
- 액추에이터가 제공하는 데이터 확인
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
'백엔드 > 연습' 카테고리의 다른 글
Grafana를 이용하여 메트릭 시각화 (0) | 2024.06.07 |
---|---|
Prometheus를 이용하여 메트릭 수집 (0) | 2024.06.06 |
EasyRandom 라이브러리 사용해보기 (0) | 2024.05.23 |
QueryDSL 적용하기: gradle-kotlin (0) | 2024.05.13 |
포트원 API 사용해보기 (0) | 2024.04.04 |