Spring Boot Actuator는 Spring Boot 애플리케이션의 운영 및 모니터링을 위한 강력한 도구입니다. Actuator를 사용하면 애플리케이션의 상태를 확인하고, 메트릭을 수집하며, 시스템의 다양한 측면을 모니터링할 수 있습니다. 이 글에서는 Spring Boot Actuator의 개념과 이를 활용한 애플리케이션 모니터링 방법을 간단한 예시 프로젝트와 함께 소개하겠습니다.
Spring Boot Actuator의 기본 개념
Spring Boot Actuator는 애플리케이션의 상태 정보를 노출하는 다양한 엔드포인트를 제공합니다. 예를 들어, /health 엔드포인트를 통해 애플리케이션의 전반적인 상태를 확인할 수 있으며, /metrics 엔드포인트를 통해 애플리케이션의 각종 메트릭 데이터를 확인할 수 있습니다.
주요 Actuator 엔드포인트는 다음과 같습니다:
- /health: 애플리케이션의 상태(예: UP, DOWN)를 보여줍니다.
- /metrics: JVM 메모리 사용량, GC 정보, HTTP 요청 수 등의 다양한 메트릭을 제공합니다.
- /info: 애플리케이션의 커스텀 정보를 노출할 수 있습니다.
- /env: 애플리케이션의 환경 변수 및 설정 속성을 보여줍니다.
- /loggers: 로깅 설정을 실시간으로 확인하고 조정할 수 있습니다.
- /httptrace: 최근 HTTP 요청 및 응답 정보를 추적합니다.
예시 프로젝트: Spring Boot Actuator를 활용한 모니터링
이제 간단한 예시 프로젝트를 통해 Spring Boot Actuator를 설정하고 사용하는 방법을 살펴보겠습니다.
1. 프로젝트 설정
Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. 필요한 의존성은 다음과 같습니다:
- Spring Web
- Spring Boot Actuator
- Spring Boot DevTools (Optional)
- Lombok (Optional)
build.gradle 또는 pom.xml 파일에 다음과 같이 의존성을 추가합니다
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// Optional dependencies
implementation 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
2. Actuator 설정
기본적으로 Spring Boot Actuator는 몇 가지 주요 엔드포인트를 활성화합니다. 하지만, 민감한 정보를 포함할 수 있으므로, 엔드포인트의 노출 범위를 조정하는 것이 중요합니다.
application.properties 파일에 다음 설정을 추가하여 Actuator 엔드포인트를 구성할 수 있습니다
# 모든 Actuator 엔드포인트 활성화
management.endpoints.web.exposure.include=*
# 특정 엔드포인트만 활성화 (예시)
# management.endpoints.web.exposure.include=health,info
# Actuator 엔드포인트에 대한 기본 경로 설정
management.endpoints.web.base-path=/actuator
위의 설정으로 모든 Actuator 엔드포인트가 /actuator 경로 아래에서 사용할 수 있게 됩니다.
3. 간단한 REST 컨트롤러 작성
애플리케이션의 기본적인 동작을 확인하기 위해 간단한 REST 컨트롤러를 추가해보겠습니다
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot Actuator!";
}
}
이제 /api/hello 엔드포인트를 통해 애플리케이션이 정상적으로 작동하는지 확인할 수 있습니다.
4. Actuator 엔드포인트 확인
애플리케이션을 실행한 후, 웹 브라우저나 curl 명령어를 통해 Actuator 엔드포인트를 확인할 수 있습니다:
/actuator/health: 애플리케이션의 상태를 확인할 수 있습니다.
curl http://localhost:8080/actuator/health
/actuator/metrics: 애플리케이션의 메트릭 정보를 확인할 수 있습니다.
curl http://localhost:8080/actuator/metrics
/actuator/info: 애플리케이션에 관한 추가 정보를 확인할 수 있습니다.
curl http://localhost:8080/actuator/info
5. 커스텀 정보 추가하기
/actuator/info 엔드포인트에 애플리케이션의 커스텀 정보를 추가할 수 있습니다. application.properties 파일에 다음과 같이 설정해보세요
info.app.name=My Spring Boot Application
info.app.version=1.0.0
info.app.description=This is a sample application using Spring Boot Actuator.
이제 /actuator/info 엔드포인트를 호출하면 위에서 설정한 정보를 확인할 수 있습니다.
curl http://localhost:8080/actuator/info
이 예제에서는 Spring Boot Actuator를 사용하여 애플리케이션의 상태를 모니터링하고 메트릭을 수집하는 방법을 알아보았습니다. Actuator는 운영 중인 애플리케이션의 상태를 실시간으로 모니터링할 수 있는 매우 유용한 도구입니다. 이를 통해 문제를 조기에 발견하고 대응할 수 있으며, 애플리케이션의 성능을 최적화하는 데 도움을 줄 수 있습니다.
Spring Boot Actuator는 다양한 확장성과 커스터마이징 옵션을 제공하므로, 프로젝트의 요구 사항에 맞게 설정을 조정할 수 있습니다. 이 글을 통해 Actuator의 기본 개념과 활용 방법을 이해하고, 여러분의 프로젝트에 적용해보시길 바랍니다.
'Spring' 카테고리의 다른 글
실패를 견디는 서비스 만들기: Spring Boot에서 Circuit Breaker 패턴 완벽 가이드 (0) | 2024.09.03 |
---|---|
Spring Boot에서 CORS 설정하기: 크로스 도메인 요청 허용을 위한 필수 가이드 (0) | 2024.09.02 |
Spring Boot의 보안 강화: OAuth2와 JWT를 활용한 인증 및 권한 관리 (0) | 2024.09.02 |
"프로메테우스와 스프링의 만남: 실시간 모니터링으로 애플리케이션의 상태를 한눈에 파악하기" (0) | 2024.08.30 |
Spring Boot에서 다중 DataSource 설정하기: 비즈니스 확장성과 성능 최적화를 위한 필수 전략 (0) | 2024.08.29 |