Spring Batch - Monitoring and Metrics Explained | Part #1
- Spring Batch 애플리케이션 모니터링을 위해 Prometheus와 Grafana를 사용하며, Spring Batch는 주로 단기 실행 작업(short-lived jobs)으로 설계됨 ⏱️
- 단기 실행 작업은 스케줄러나 이벤트에 의해 트리거되며, CI 프로세스나 AWS Lambda 함수 호출과 같은 사용 사례가 있음 ⚙️
- Spring Batch는 Kubernetes 환경에서 CronJob이나 Job 형태로 배포되는 경우가 많음 ☸️
- 일반적인 Spring Boot 애플리케이션 모니터링에는 Actuator, Micrometer, Prometheus를 사용하며, 이는 장기 실행 애플리케이션에 적합함 📊
- 장기 실행 애플리케이션(예: 마이크로서비스)은 Actuator와 Micrometer를 통해 Prometheus 엔드포인트를 노출하고, Prometheus가 메트릭을 수집하여 Grafana에서 시각화함 📈
- OpenTelemetry나 Datadog, Dynatrace와 같은 엔터프라이즈 솔루션도 모니터링에 활용 가능함 🏢
- 단기 실행 작업의 경우, Prometheus가 엔드포인트를 폴링하는 동안 애플리케이션이 종료될 수 있어 메트릭이 손실될 수 있음 ❌
- Push Gateway는 단기 실행 작업의 메트릭을 저장하는 중간 저장소 역할을 하며, 작업 종료 전에 메트릭을 Push Gateway로 전송함 📤
- Prometheus는 Push Gateway에서 메트릭을 폴링하고, Grafana는 Prometheus를 데이터 소스로 사용하여 대시보드를 생성함 💡
- Docker를 사용하여 Push Gateway, Prometheus, Grafana 컨테이너를 실행하고, Spring Batch 애플리케이션을 구성하여 메트릭을 Push Gateway로 전송하도록 설정함 🐳
- Spring Batch 애플리케이션에 Actuator, Micrometer, Prometheus Push Gateway 의존성을 추가하여 메트릭을 활성화하고 Push Gateway로 전송하도록 구성함 ➕
- Actuator 엔드포인트를 활성화하고, Prometheus 메트릭 내보내기를 활성화하며, Push Gateway 설정을 구성하여 애플리케이션이 메트릭을 전송하도록 함 ✅