https://community.grafana.com/t/ensuring-prometheus-high-availability-for-latency-based-hpa/157750
서비스 레이턴시(Service Latency)는 사용자 경험, SLA 준수 여부, 그리고 궁극적으로는 비즈니스 수익에 직접적인 영향을 미치는 핵심 지표입니다.
CPU나 메모리 사용률이 시스템의 내부 상태를 보여준다면, 레이턴시는 사용자가 실제로 서비스를 어떻게 체감하는지를 그대로 반영합니다.
이러한 이유로 우리는 Prometheus의 probe_http_duration_seconds 메트릭을 활용해
레이턴시 기반 HPA(Horizontal Pod Autoscaling)를 구축했습니다.
CPU 사용률에만 의존하는 대신, 서비스 레이턴시가 증가하는 순간 즉시 Pod를 스케일링하도록 구성했습니다.
이를 통해 갑작스러운 트래픽 증가에도 보다 민첩하게 대응하면서, 리소스 사용 효율을 함께 최적화할 수 있었습니다.
숨겨진 위험: Prometheus의 단일 장애점(SPOF)
레이턴시 기반 HPA가 정상적으로 동작하기 위한 핵심 전제는
Prometheus가 항상 가용한 상태여야 한다는 점입니다.
그러나 단일 바이너리와 로컬 TSDB(Time Series Database) 구조를 가진 Prometheus는 다음과 같은 구조적 한계를 가지고 있습니다.
- 단일 장애점(SPOF)
Prometheus 인스턴스가 장애를 일으키면 메트릭 수집이 즉시 중단되고, HPA는 스케일링 신호를 상실합니다.
- 높은 메모리 사용량
고 카디널리티(high-cardinality) 레이블은 메모리 사용량을 급격히 증가시키며, OOM(Out of Memory) 오류로 이어질 수 있습니다.
- 확장성의 한계
Prometheus는 기본적으로 단일 노드 환경에 최적화되어 있어, 대규모 환경에서 다수 인스턴스 관리나 메트릭 중앙화가 어렵습니다.
- 재해 복구(Disaster Recovery) 부재
원격 스토리지가 없는 기본 구조에서는 장기 보관과 장애 복구가 사실상 불가능합니다.
이러한 환경에서는 Prometheus의 장애가 곧 서비스 장애로 직결됩니다.
실제 장애 시나리오
다음과 같은 상황을 가정해 보겠습니다.
- 갑작스러운 트래픽 급증으로 서비스 레이턴시가 임계치를 초과합니다.
- 동시에 메모리 과부하 또는 예기치 않은 오류로 Prometheus가 크래시됩니다.
- HPA는 더 이상 스케일링 신호를 수신하지 못합니다.
- Pod 수는 그대로 유지된 채 트래픽만 증가하면서 서비스 장애로 이어집니다.
이 시나리오는 Prometheus가 단일 장애점으로 남아 있어서는 안 되는 이유를 명확히 보여줍니다.
메모리 최적화 전략
Prometheus의 메모리 사용량은 주로 다음 요소들에 의해 결정됩니다.
- 활성 시계열(Active Series) 수
- 레이블 카디널리티(Label Cardinality)
- 데이터 보존 기간(Retention Period)
이를 완화하기 위한 효과적인 전략은 다음과 같습니다.
- TSDB 보존 기간 조정 (
prometheusSpec.retention)
실제로 필요한 기간만 데이터를 보관하여 메모리 및 디스크 오버헤드를 줄입니다.
- 보다 근본적인 개선을 위해서는 고가용성과 장기 보관을 제공하는 Mimir와 같은 솔루션 도입을 고려할 수 있습니다.
- 스크래핑 설정 개선 (
prometheusSpec.additionalScrapeConfigs)
불필요하거나 지나치게 세분화된 메트릭 수집을 줄여, 수집 단계에서부터 시계열 카디널리티를 낮춥니다.
- Recording Rule의 선택적 사용
연산 비용이 높은 쿼리에만 적용하여 쿼리 부하를 최소화합니다.
- Remote Write 연동
장기 데이터를 외부 스토리지로 오프로드하여 Prometheus의 메모리 사용량을 줄입니다.
Prometheus 확장 솔루션: 고가용성 확보
Prometheus의 한계를 극복하고
고가용성, 장기 데이터 보존, 재해 복구를 달성하기 위해 다음과 같은 확장 솔루션을 고려할 수 있습니다.
- Thanos
Prometheus Sidecar와 객체 스토리지를 결합해 고가용성과 장기 보관을 제공하는 안정적인 솔루션입니다.
- Mimir
Grafana Labs에서 개발한 오픈 소스 프로젝트로, 수십억 개의 시계열 데이터를 처리할 수 있도록 설계된 고확장성·고가용성 솔루션입니다.
- Cortex
멀티 테넌시를 중심으로 설계된 분산 메트릭 스토리지 시스템으로, 여전히 많은 기업 환경에서 사용되고 있습니다.
- VictoriaMetrics
가볍고 고성능을 지향하는 Prometheus 대안으로, 비용 효율적인 운영이 가능합니다.
결론
레이턴시 기반 HPA는 매우 강력한 접근 방식이지만,
Prometheus 자체의 안정성이 보장될 때만 의미가 있습니다.
고가용성과 메모리 최적화가 뒷받침되지 않는다면,
Prometheus는 오히려 서비스 장애의 원인이 될 수 있습니다.