본문 바로가기
문서 목차
ORKESTRIX설치

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 + 대시보드 추가 배포
5~7번은 각각 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)} 타겟 정상')
"

다음 단계