Spring Actuator 메트릭스 모니터링
- Spring Actuator는 애플리케이션 메트릭을 제공하며, Micrometer를 통해 Prometheus 같은 모니터링 시스템과 통합 가능.
/actuator/metrics에서 기본 메트릭 확인 가능.
- 추가 설정으로 필요한 엔드포인트를 활성화해야 활용 범위가 넓어짐.
Groovy와 Gradle의 관계
- Gradle은 빌드 스크립트 기본 언어로 Groovy DSL을 사용.
- Groovy는 간결한 선언형 문법과 패턴화된 구조로 빌드 작업 최적화.
- Kotlin DSL도 지원하지만 Groovy는 기본적으로 Gradle에서 널리 사용됨.
Prometheus와 SoundCloud/CNCF
- Prometheus는 SoundCloud에서 내부 모니터링 도구로 시작, CNCF에 기여됨.
- CNCF(Cloud Native Computing Foundation)는 Kubernetes 등 클라우드 네이티브 기술 관리 재단.
- SoundCloud의 인디 음악 플랫폼에서 시작한 기술이 글로벌 모니터링 도구로 성장한 사례.
Exporter 역할
- Exporter는 Prometheus가 이해할 수 있는 메트릭 형식으로 변환.
- 예: Node Exporter(서버 메트릭), PostgreSQL Exporter(데이터베이스 메트릭).
- Prometheus는 범용 플랫폼으로 설계되어, 필요한 Exporter는 사용자가 추가 설정.
Pushgateway
- 짧은 수명의 작업(배치, 스크립트)에서 메트릭을 Push 방식으로 Prometheus에 전달.
- Prometheus는 기본적으로 Pull 방식이며, Pushgateway는 예외적인 상황에서 보완 역할.
Prometheus 서버 다운 대비책
- 고가용성(HA): 여러 Prometheus 인스턴스 운영.
- 원격 스토리지: Thanos, Cortex 등과 연동하여 데이터 복구 가능.
- Alertmanager HA: 알림 연속성 유지.
- 스냅샷 백업: 주기적으로 데이터 저장.
Prometheus 설정 파일 위치
- 일반적으로
/etc/prometheus/prometheus.yml에 저장.
- Spring 프로젝트 내부에서는
src/main/resources/etc/prometheus/prometheus.yml에 두는 것도 가능.
- 실행 시
--config.file 옵션으로 경로 지정.
Prometheus 수집 대상 설정
정적설정
동적설정
- 쿠버네티스에서 동적 모니터링 설정
Kubernetes Pod에서 라벨 기반으로 필터링하여 대상 탐색 가능.
- yml 예시:
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: 'my-app'