본문으로 건너뛰기

Prometheus

Prometheus는 kube-prometheus-stack 차트로 배포되지만, Lumie는 이를 기본 설치와 다르게 사용합니다. 대부분의 워크로드 스크레이프는 OpenTelemetry collector에 위임되고, Prometheus는 주로 메트릭 저장, 평가, 제공을 담당합니다.

소스 경로

  • lumie-infra/observability/prometheus/argocd.yaml
  • lumie-infra/observability/prometheus/helm-values.yaml
  • lumie-infra/observability/prometheus/common-values.yaml

런타임 역할

  • prometheus 네임스페이스에서 Prometheus replica 1개 실행
  • 네이티브 OTLP receiver를 enableOTLPReceiver: true로 활성화
  • 로컬 보존을 3d만 유지
  • Thanos sidecar service는 활성화하지만 오브젝트 스토어 업로드는 구성하지 않음
  • 별도 alertmanager 네임스페이스의 Alertmanager 배포로 알림 전송

핵심 계약

다음 값이 가장 중요한 동작을 정의합니다.

enableOTLPReceiver: true
retention: 3d
serviceMonitorSelector:
matchLabels:
scrape-by: prometheus-only

소스 경로: lumie-infra/observability/prometheus/helm-values.yaml

즉, Prometheus 자체는 명시적으로 라벨링된 좁은 대상만 스크레이프합니다. 광범위한 ServiceMonitor 발견은 여기 아니라 OpenTelemetry에서 수행됩니다.

저장하고 제공하는 것

  • OpenTelemetry collector가 OTLP로 export한 메트릭
  • 일부 noisy rule group을 비활성화한 기본 kube-prometheus rule 및 recording
  • 다음을 위한 커스텀 Lumie rule group
    • OOM 이벤트
    • grading queue와 latency
    • report generation queue와 latency
    • analysis worker 오류와 latency
    • chatbot stream 상태
    • CNPG backup 상태
    • MinIO replication 지연 또는 실패

의존성

  • 대부분의 target scraping을 담당하는 OpenTelemetry collector
  • 알림 전송을 위한 Alertmanager
  • 운영자 UI 접근을 위한 Teleport
  • 레지스트리 자격 증명과 일부 secret-backed 구성을 위한 VaultStaticSecret 렌더링

현재 한계

  • 로컬 보존이 3일뿐입니다.
  • Thanos 오브젝트 스토어 업로드는 의도적으로 비활성화되어 있으므로, 오늘날 저장소 기반 장기 Prometheus block archive는 없습니다.
  • 시계열 수와 메모리 압박을 줄이기 위해 kubeApiServer, kubeEtcd 같은 일부 kube control-plane 메트릭은 명시적으로 비활성화됩니다.

장애 지점

  • OpenTelemetry에서 Prometheus로의 exporter가 깨지면 Prometheus는 healthy한 채로 워크로드 메트릭이 조용히 끊길 수 있습니다.
  • 팀이 기본 kube-prometheus ServiceMonitor 동작을 기대하면, Lumie가 collector를 통해 스크레이프 모델을 사실상 뒤집었다는 점을 놓치게 됩니다.
  • 메모리 압박이 커지면 retention을 늘리기 전에 ServiceMonitor target의 시리즈 cardinality 변화나 alert rule 증가부터 확인하세요.

검증

kubectl get applications.argoproj.io -n argocd prometheus
kubectl get pods -n prometheus
kubectl get prometheusrules -n prometheus
kubectl get servicemonitors -A
kubectl describe pod -n prometheus prometheus-prometheus-kube-prometheus-prometheus-0

관측성

  • Grafana는 Thanos를 기본 Prometheus 호환 datasource로 사용하고, 직접 Prometheus는 보조 datasource로 유지합니다.
  • 알림 라우팅은 Alertmanager에 정의됩니다.
  • OTLP 수집 경로와 target discovery 경로는 OpenTelemetry에 설명되어 있습니다.

관련 페이지