문서 목차
Prometheus/Grafana (모니터링)
클러스터와 워크로드의 CPU/메모리/디스크 등 실시간 지표를 수집·저장하고(Prometheus), 이를 대시보드로 시각화하는(Grafana) 모니터링 스택을 설치합니다. kube prometheus stack (Prometheus + Alertmanager + Grafana + Prometheus Operator + no
QUANTUM C&S
클러스터와 워크로드의 CPU/메모리/디스크 등 실시간 지표를 수집 · 저장하고(Prometheus), 이를 대시보드로 시각화하는(Grafana) 모니터링 스택을 설치합니다. kube-prometheus-stack(Prometheus + Alertmanager + Grafana + Prometheus Operator + node-exporter + kube-state-metrics)을 한 번에 배포합니다.
설정값
inventory/qks/group_vars/all/all-k8s.yaml:
qks_monitoring_enabled: true
qks_monitoring_version: 91.5.2
qks_monitoring_namespace: qks-monitoring
qks_monitoring_prometheus_fqdn: "pm.{{ kube_default_domain }}"
qks_monitoring_prometheus_retention: 4w
qks_monitoring_alertmanager_fqdn: "pa.{{ kube_default_domain }}"
qks_monitoring_grafana_fqdn: "mon.{{ kube_default_domain }}"
qks_monitoring_grafana_pass: "{{ kube_default_passwd }}"
실행
./install.sh ubuntu plays/qks-monitoring.yaml
설치 흐름
./install.sh ubuntu plays/qks-monitoring.yaml
├─ 1. 접속 도메인(Prometheus/Alertmanager/Grafana) /etc/hosts 등록
├─ 2. Helm 저장소 등록 (prometheus-community)
├─ 3. Helm으로 kube-prometheus-stack 배포
│ - Prometheus, Alertmanager, Grafana, Prometheus Operator,
│ node-exporter, kube-state-metrics 한 번에 설치
│ - 3개 컴포넌트(Prometheus/Alertmanager/Grafana) 전부 Traefik 인그레스로 노출
├─ 4. 핵심 Grafana 대시보드 배포 (클러스터/JVM/파드 현황)
├─ 5. (Ceph 설치된 경우) Ceph용 ServiceMonitor 추가 배포
├─ 6. (MariaDB 설치된 경우) MariaDB용 ServiceMonitor 추가 배포
└─ 7. (GPU 가속기 설치된 경우) GPU용 ServiceMonitor + 대시보드 추가 배포
qks_rook_ceph_enabled/qks_mariadb_enabled/qks_accelerator_enabled 값에 따라 자동으로 켜지고 꺼집니다 — 해당 컴포넌트가 아직 없으면 이 단계 자체가 생략됩니다.
설치 확인
kubectl get pods -n qks-monitoring
helm list -n qks-monitoring
Prometheus, Alertmanager, Grafana, Operator, node-exporter(전 노드), kube-state-metrics 파드가 전부 Running, Helm 릴리즈가 deployed여야 합니다.
실제 동작 확인
curl -k -s -o /dev/null -w "%{http_code}\n" https://<qks_monitoring_prometheus_fqdn>/
curl -k -s -o /dev/null -w "%{http_code}\n" https://<qks_monitoring_grafana_fqdn>/
둘 다 200 또는 302(Prometheus는 /graph로, Grafana는 /login으로 리다이렉트)가 나오면 정상입니다. Grafana는 admin / qks_monitoring_grafana_pass 값으로 로그인해서, 미리 배포된 클러스터 대시보드에 실제 노드/파드 지표가 표시되는지 확인합니다.
Prometheus가 실제로 타겟을 정상 스크래핑하고 있는지도 확인합니다:
curl -k -s "https://<qks_monitoring_prometheus_fqdn>/api/v1/targets" | python3 -c "
import json,sys
data = json.load(sys.stdin)['data']['activeTargets']
up = sum(1 for t in data if t['health'] == 'up')
print(f'{up}/{len(data)} 타겟 정상')
"