1. Spring Boot Actuator 활성화
Spring Boot 는 애플리케이션을 운영환경으로 전환할 때 애플리케이션을 모니터링하고 관리하는 데 도움이 되는 여러 가지 추가 기능이 포함되어 있다. 이들 기능은 Spring Boot Actuator 모듈에 대한 의존성을 추가하여 활성화 할 수 있다. 의존성은 spring-boot-starter-actuator 스타터를 사용한다.① 의존성 추가
spring-boot-starter-actuator 의존성을 프로젝트의 pom.xml 또는 build.gradle 파일에 추가한다. 이렇게 하면 Spring Actuator 관련 기능을 프로젝트에 포함시킬 수 있다.
Spring Boot Actuator가 제공하는 주요 기능은 다음과 같다:
- 엔드포인트(Endpoints): Spring Boot Actuator는 다양한 HTTP 엔드포인트를 제공하여 애플리케이션의 상태 정보를 노출한다. 예를 들어, /actuator/health, /actuator/info, /actuator/metrics, /actuator/beans, /actuator/env 등의 엔드포인트를 통해 건강 상태, 애플리케이션 정보, 메트릭 데이터, 빈 정보, 환경 속성 정보 등을 확인할 수 있다.
- 메트릭 수집: Spring Boot Actuator는 애플리케이션의 성능과 동작에 관한 다양한 메트릭 데이터를 수집하고 노출한다. 이러한 메트릭 데이터는 모니터링 도구나 시각화 도구와 연동하여 성능 향상 및 문제 해결에 도움을 줄 수 있다.
- 응용 프로그램 정보: /actuator/info 엔드포인트를 통해 사용자 정의 애플리케이션 정보를 노출.
- 애플리케이션의 건강 검사: /actuator/health 엔드포인트를 사용하여 애플리케이션의 건강 상태를 확인하고 이에 따른 조치를 취할 수 있다.
- 환경 속성 관리: /actuator/env 엔드포인트를 통해 애플리케이션 환경 속성을 확인하고 조작할 수 있다.
❉ HTTP 엔드포인트는 일반적으로 URL 형식을 가지며, 웹 주소의 일부다. 예를 들어, "https://example.com/api/data"와 같은 형태가 될 수 있다.
2. 설정 및 보안 구성
Spring Boot Actuator 사용을 위해서 의존성을 추가하는 것으로는 충분하지 않으며 몇 가지 설정과 보안을 추가적으로 구성해야 한다.② 구성 파일 설정
Spring Actuator 의 기능 중 일부는 구성 파일(application.properties 또는 application.yml)에서 활성화하거나 구성해야 한다. 예를 들어, management.endpoints.web.exposure.include 속성을 사용하여 공개할 엔드포인트를 구성하거나, 엔드포인트의 경로를 사용자 정의할 수 있다.
③ 보안 설정
Spring Actuator 엔드포인트에 접근하는 데 보안을 구성해야 할 수 있습니다. 기본적으로 모든 엔드포인트는 보안이 적용되지 않았으며, 이를 구성하여 액세스 제한, 인증 또는 권한 부여를 설정할 수 있다.
④ 엔드포인트 사용
Spring Actuator의 엔드포인트를 사용하려면 브라우저 또는 HTTP 클라이언트를 통해 엔드포인트에 요청을 보낼 수 있다. 엔드포인트는 /actuator 경로 아래에 위치하며, 예를 들어 /actuator/health 엔드포인트는 애플리케이션의 건강 상태 정보를 제공한다. 다음은 health,beans,metrics 기능들을 웹 서비스 엔트포인트로 사용하고 jmx 는 사용하지 않는 경우 설정이다.
3. 모니터링 구현하기
모니터링은 Vue 기술을 사용하여 구현했다. 모니터링 포트는 별도로 지정하는 것이 보안 및 모니터링 행위가 주는 영향을 최소화하기위하여 좋을 것 같다.
◼︎ 환경
웹과 모니터링 포트를 같이 사용하는 경우 모니터링 API 호출로 인하여 http.server.requests 값이 상승하는 것을 확인할 수 있었다.
관련 코드는 아래와 같다.
- Computing Power
- Model : MacBook Pro (14-inch, 2021)
- CPU : Apple M1 Pro
- MENORY : 16GB
- DISK : 512 GB SSD
- OS : macOS 13.2.4 (22F66)
- TOOLS : Visual Studio Code, Java 11, Gradle, Docker
- Version Control : GitHub
- Back-End
- Programming Language : Java
- Framework : Spring Boot 2.7.12
- DBMS : MySql 8.0.33
- Front-End
- Vue3 , Vuetify3, pinia, axios, apexcharts
<웹 프로그램과 모니터링 포트를 같이 사용하는 경우> |
웹과 모니터링 포트를 같이 사용하는 경우 모니터링 API 호출로 인하여 http.server.requests 값이 상승하는 것을 확인할 수 있었다.
댓글 없음:
댓글 쓰기