Published on

10단계: 모니터링 도입 (Prometheus + Grafana)

왜 모니터링이 필요한가?

  • Pod 상태, CPU/메모리 사용량, 요청 수, 에러율 등을 시각화해서 실시간 감시
  • 장애 발생 전 조기 대응 및 리소스 최적화 가능

구성 요소 개요

구성역할
Prometheus메트릭 수집 및 저장
Node Exporter노드 리소스 메트릭 수집
Kube-State-MetricsKubernetes 오브젝트 상태 수집
Grafana시각화 대시보드

minikube에 Prometheus + Grafana 설치 (Helm 없이 수동)

(1) 네임스페이스 생성

kubectl create namespace monitoring

(2) 필수 컴포넌트 배포

  • Prometheus, Grafana, Node Exporter, Kube-State-Metrics 등 YAML을 작성하거나 미리 구성된 매니페스트 사용
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/setup/prometheus-operator-crd.yaml

※ 여기선 Helm 설치 생략했지만, 실무에선 Helm 설치를 추천.


Grafana 접속

kubectl port-forward svc/grafana -n monitoring 3000:3000
  • 브라우저 접속: http://localhost:3000
  • 기본 로그인: admin / admin

대시보드 구성

  • Grafana에서 Prometheus 데이터 소스 추가
  • Kubernetes / Node / Pod 상태 모니터링 대시보드 가져오기 (Grafana.com 공유 ID: 6417, 315 등)

요약

  • Prometheus는 메트릭 수집, Grafana는 시각화 담당
  • 메트릭 수집 → 경고(Alertmanager) → 시각화(Grafana)로 연계됨
  • 클러스터 안정성과 리소스 사용 최적화를 위해 반드시 구성해야 할 요소

심화학습

Q1: Prometheus가 수집하는 데이터는 어떤 형식으로 저장되는가?

A: 시계열 데이터 형식으로 자체 TSDB(Time Series Database)에 저장된다. metric name, labels, timestamp, value로 구성된다.

Q2: Grafana는 Prometheus 외에도 어떤 데이터 소스를 지원하는가?

A: Elasticsearch, InfluxDB, MySQL, PostgreSQL, Loki 등 다양한 시계열/SQL 기반 데이터 소스를 지원한다.

Q3: Kube-State-Metrics는 어떤 종류의 데이터를 수집하는가?

A: Pod, Node, Deployment, PVC 등 Kubernetes 리소스들의 상태 정보를 수집한다. 메트릭 기반이 아닌 오브젝트 상태 기반이다.