- Published on
10단계: 모니터링 도입 (Prometheus + Grafana)
왜 모니터링이 필요한가?
- Pod 상태, CPU/메모리 사용량, 요청 수, 에러율 등을 시각화해서 실시간 감시
- 장애 발생 전 조기 대응 및 리소스 최적화 가능
구성 요소 개요
구성 | 역할 |
---|---|
Prometheus | 메트릭 수집 및 저장 |
Node Exporter | 노드 리소스 메트릭 수집 |
Kube-State-Metrics | Kubernetes 오브젝트 상태 수집 |
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 리소스들의 상태 정보를 수집한다. 메트릭 기반이 아닌 오브젝트 상태 기반이다.