티스토리 뷰

VictoriaMetrics Helm Charts 비교

victoria-metrics-k8s-stack vs victoria-metrics-single

개요

현재 설치된 victoria-metrics-k8s-stackvictoria-metrics-single의 기능적 차이를 분석합니다.

📦 포함된 컴포넌트 비교

victoria-metrics-k8s-stack (현재 설치됨)

올인원 쿠버네티스 모니터링 솔루션

컴포넌트 설명 현재 상태
VictoriaMetrics Operator CRD 관리, VMAgent/VMSingle 등 운영 ✅ 설치됨
VMSingle 메트릭 스토리지 (단일 노드) ✅ 설치됨
VMAgent 메트릭 수집 에이전트 ✅ 설치됨
VMAlert 알림 규칙 엔진 ❌ 비활성화 (리소스 절약)
VMAlertmanager 알림 관리자 ❌ 비활성화 (리소스 절약)
Grafana 시각화 대시보드 ✅ 설치됨
Prometheus Node Exporter 노드 메트릭 수집 ✅ 설치됨 (DaemonSet)
Kube-State-Metrics K8s 리소스 메트릭 ❌ 비활성화 (리소스 절약)
기본 알림 규칙 Kubernetes 관련 PrometheusRules ✅ 포함 (일부 비활성화)
기본 대시보드 Grafana 대시보드 템플릿 ✅ 포함

총 리소스 사용량 (최소 설정):

  • CPU: ~18m (requests: 250m, limits: 1150m)
  • Memory: ~404Mi (requests: 912Mi, limits: 1.8Gi)
  • 스토리지: 12Gi (VMSingle 10Gi + Grafana 2Gi)

victoria-metrics-single

VMSingle만 설치하는 미니멀 차트

컴포넌트 설명 포함 여부
VMSingle 메트릭 스토리지 (StatefulSet) ✅ 포함
Scrape 설정 수동으로 -promscrape.config 설정 필요 ⚠️ 수동 설정
기타 모든 컴포넌트 Operator, Agent, Grafana 등 ❌ 미포함

예상 리소스 사용량:

  • CPU: ~5-10m (단일 Pod)
  • Memory: ~50-100Mi (기본 설정)
  • 스토리지: 설정에 따라 (기본 8Gi)

🎯 기능적 차이

1. 메트릭 수집 방식

k8s-stack (현재)

메트릭 소스 → Node Exporter (DaemonSet)
                    ↓
              VMAgent (자동 발견)
                    ↓
              VMSingle (저장)
                    ↓
              Grafana (시각화)

장점:

  • ✅ ServiceMonitor/PodMonitor 자동 발견
  • ✅ Kubernetes 네이티브 (Operator 패턴)
  • ✅ 설정 변경 시 자동 재로드

단점:

  • ❌ 리소스 사용량 높음 (Operator + Agent)
  • ❌ 복잡한 아키텍처

victoria-metrics-single

메트릭 소스 → VMSingle (내장 scraper)
                    ↓
              직접 저장

장점:

  • ✅ 극도로 단순한 아키텍처
  • ✅ 최소 리소스 사용
  • ✅ VMSingle 내장 scraper 사용 가능

단점:

  • ❌ ServiceMonitor 자동 발견 없음
  • ❌ 수동으로 scrape 설정 필요 (-promscrape.config)
  • ❌ Grafana 별도 설치 필요
  • ❌ Node Exporter 별도 설치 필요

2. 설정 관리

k8s-stack (현재)

# VMServiceScrape CRD로 자동 관리
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMServiceScrape
metadata:
  name: my-app
spec:
  selector:
    matchLabels:
      app: my-app
  endpoints:
    - port: metrics

자동으로 VMAgent 설정이 업데이트됨

victoria-metrics-single

# VMSingle StatefulSet의 args에 직접 추가
server:
  extraArgs:
    promscrape.config: |
      scrape_configs:
        - job_name: 'my-app'
          static_configs:
            - targets: ['my-app:8080']

Helm values 수정 후 재배포 필요

3. 고가용성 (HA)

기능 k8s-stack victoria-metrics-single
VMSingle HA VMCluster로 업그레이드 가능 VMCluster 차트로 마이그레이션 필요
VMAgent HA 레플리카 증가 가능 지원 안함 (VMSingle 내장 scraper)
데이터 복제 VMCluster 사용 시 가능 단일 노드 (복제 없음)

4. 확장성

k8s-stack (현재)

수평 확장:

  • VMAgent 레플리카 증가 (자동 샤딩)
  • VMSingle → VMCluster 마이그레이션 (데이터 샤딩)

수직 확장:

  • VMSingle 리소스만 증가

victoria-metrics-single

수평 확장:

  • 불가능 (단일 StatefulSet)
  • VMCluster로 완전 재구축 필요

수직 확장:

  • VMSingle 리소스 증가 (유일한 방법)

🔄 마이그레이션 시나리오

k8s-stack → victoria-metrics-single

적합한 경우:

  • 권장하지 않음! 기능 손실이 너무 큼

손실되는 기능:

  1. ❌ ServiceMonitor/PodMonitor 자동 발견
  2. ❌ Grafana (별도 설치 필요)
  3. ❌ Node Exporter (별도 설치 필요)
  4. ❌ Operator 기반 선언적 관리
  5. ❌ 기본 대시보드 & 알림 규칙

절약되는 리소스:

  • CPU: ~250m → ~10m (약 25배 절감)
  • Memory: ~900Mi → ~100Mi (약 9배 절감)

victoria-metrics-single → k8s-stack

적합한 경우:

  • ✅ Kubernetes 네이티브 모니터링 필요
  • ✅ 자동 메트릭 수집 원함
  • ✅ Grafana 통합 필요
  • ✅ ServiceMonitor 사용 원함

추가되는 기능:

  1. ✅ Operator 기반 자동화
  2. ✅ Grafana + 기본 대시보드
  3. ✅ VMAgent 자동 발견
  4. ✅ 알림 규칙 관리 (VMAlert)

💡 권장사항

현재 상태 유지 (k8s-stack) 권장

이유:

  1. ✅ 이미 최소 설정으로 최적화됨
  2. ✅ ServiceMonitor 자동 발견 필수 (imprun-server 메트릭 수집)
  3. ✅ Grafana 통합으로 즉시 시각화 가능
  4. ✅ 향후 확장 용이 (VMCluster로 업그레이드)

victoria-metrics-single로 변경하면 안 되는 이유

항목 k8s-stack victoria-metrics-single 영향
imprun-server 메트릭 VMServiceScrape로 자동 수집 수동 설정 필요 (복잡) ⚠️ 메트릭 수집 중단 위험
Grafana 포함됨 별도 설치 필요 ⚠️ 추가 작업 필요
Node Exporter 포함됨 (DaemonSet) 별도 설치 필요 ⚠️ 노드 메트릭 손실
설정 변경 CRD 업데이트 (자동 반영) Helm values 수정 (재배포) ⚠️ 운영 복잡도 증가
리소스 절약 250m CPU, 900Mi Mem 10m CPU, 100Mi Mem ✅ 약 90% 절감

결론: 리소스 절약은 크지만, 운영 복잡도 증가기능 손실이 훨씬 큼!

📊 실제 사용 사례 비교

시나리오 1: imprun.dev 플랫폼 모니터링 (현재)

요구사항:

  • imprun-server, imprun-console 메트릭 수집
  • 노드 리소스 모니터링
  • Grafana 대시보드로 시각화

적합한 차트: ✅ victoria-metrics-k8s-stack (현재 설치)

이유:

  • ServiceMonitor로 자동 메트릭 수집
  • Grafana 통합
  • Node Exporter 포함

시나리오 2: 단순 메트릭 저장소 (Prometheus Remote Write만)

요구사항:

  • 외부 Prometheus에서 메트릭 전송
  • 장기 보존만 필요
  • 시각화는 외부 Grafana 사용

적합한 차트: ✅ victoria-metrics-single

이유:

  • VMSingle의 /api/v1/write 엔드포인트만 필요
  • 최소 리소스
  • 단순 아키텍처

시나리오 3: 대규모 클러스터 (1000+ Pods)

요구사항:

  • 대량 메트릭 수집
  • 고가용성 필요
  • 샤딩 필요

적합한 차트: ✅ victoria-metrics-cluster

이유:

  • 수평 확장 가능
  • 데이터 샤딩
  • HA 구성

🔧 마이그레이션 가이드 (참고용)

k8s-stack → victoria-metrics-single로 변경 시 (권장하지 않음!)

# 1. 데이터 백업
kubectl exec -n monitoring vmsingle-vm-victoria-metrics-k8s-stack-xxx -- \
  /victoria-metrics-prod -snapshotCreateURL=http://localhost:8428/snapshot/create

# 2. 기존 스택 제거
helm uninstall vm -n monitoring

# 3. victoria-metrics-single 설치
helm install vmsingle vm/victoria-metrics-single \
  -n monitoring \
  -f vmsingle-values.yaml

# 4. Grafana 별도 설치
helm install grafana grafana/grafana -n monitoring

# 5. Node Exporter 별도 설치
helm install node-exporter prometheus-community/prometheus-node-exporter -n monitoring

# 6. scrape 설정 수동 추가 (vmsingle-values.yaml)
server:
  extraArgs:
    promscrape.config: |
      scrape_configs:
        - job_name: 'node-exporter'
          static_configs:
            - targets: ['node-exporter:9100']
        - job_name: 'imprun-server'
          static_configs:
            - targets: ['imprun-server.imprun-system:3000']

복잡도: ⚠️⚠️⚠️ 매우 높음!

결론

❌ victoria-metrics-single로 변경하지 마세요!

현재 k8s-stack이 더 나은 이유:

  1. ✅ 자동화된 메트릭 수집
  2. ✅ Grafana 통합
  3. ✅ ServiceMonitor 지원
  4. ✅ 향후 확장 용이
  5. ✅ 이미 최소 설정으로 최적화됨

리소스가 정말 부족하다면:

  • k8s-stack 유지하되 추가 최적화 (VMAlert, Alertmanager 비활성화 - 이미 완료)
  • 메트릭 보존 기간 단축 (3개월 → 1개월 - 이미 완료)
  • 스크래핑 간격 증가 (30s → 60s - 이미 완료)

현재 상태가 최적입니다! 🎯

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함