[2. 공부]/[2.1 코딩]

📊 Prometheus와 Grafana를 사용한 Kubernetes 모니터링

주식경이 2025. 3. 7. 15:54
반응형

Kubernetes 클러스터가 정상적으로 작동하는지 확인하려면 모니터링이 필수적입니다. 서비스의 가용성, 리소스 사용량, 애플리케이션 상태 등을 실시간으로 파악하지 못하면 문제 발생 시 빠른 대응이 어렵고 장애가 장기화될 수 있습니다. 이를 해결하기 위해 많은 팀이 PrometheusGrafana를 함께 사용합니다.

  • Prometheus: 시계열 데이터 수집 및 경보 시스템으로, Kubernetes에서 메트릭 데이터를 수집합니다.
  • Grafana: 데이터 시각화 도구로, Prometheus에서 수집한 데이터를 대시보드에 시각적으로 표현합니다.

두 도구를 함께 사용하면 리소스 사용량 모니터링, 이상 탐지, 시스템 가시성 확보가 가능하며, 실시간 경고 설정으로 빠른 문제 대응이 가능합니다.

🔑 핵심 내용:

  • Prometheus와 Grafana의 개념 및 필요성
  • Kubernetes 클러스터에 Prometheus 설치 및 구성
  • Grafana 설치 및 Prometheus 데이터 시각화 방법
  • 실전 사용 예시와 경고(Alert) 설정 방법
  • 모니터링 시 유용한 팁과 주의사항

이 글에서는 Prometheus와 Grafana를 사용해 Kubernetes 모니터링 시스템을 구축하는 방법을 단계별로 설명합니다. 🚀


🌱 1. Prometheus와 Grafana란 무엇인가?

📈 Prometheus란?

Prometheus오픈소스 모니터링 도구로, 다양한 시스템에서 메트릭 데이터를 수집, 저장, 쿼리, 경고할 수 있습니다. Kubernetes와 긴밀히 통합되어 Pod 상태, CPU/메모리 사용량, 네트워크 트래픽 등의 메트릭을 실시간으로 수집합니다.

📊 Grafana란?

Grafana다양한 데이터 소스를 시각적으로 표현할 수 있는 도구로, Prometheus와 함께 사용하면 수집된 메트릭을 대시보드 형태로 실시간 시각화할 수 있습니다.

📌 Prometheus & Grafana의 주요 특징

실시간 모니터링 및 경고 설정 가능
CPU, 메모리, 네트워크 사용량 등 다양한 메트릭 수집
맞춤형 대시보드 제공으로 데이터 가시성 확보
다양한 데이터 소스와의 통합 지원
오픈소스 기반으로 무료 사용 가능

TIP: Prometheus가 데이터 수집 및 저장을 담당하고, Grafana가 시각화를 담당합니다.


🛠️ 2. Kubernetes에 Prometheus와 Grafana 설치하기

📝 Step 1: Helm 설치 확인 및 준비

Helm을 사용하면 Prometheus와 Grafana 설치가 간소화됩니다.

Helm 설치 여부 확인:

helm version

Helm 저장소 추가:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

📝 Step 2: Prometheus 설치 및 구성

Prometheus 설치:

kubectl create namespace monitoring
helm install prometheus prometheus-community/prometheus --namespace monitoring

Prometheus UI 접속:

kubectl port-forward -n monitoring svc/prometheus-server 9090:80

브라우저에서 접속: http://localhost:9090

Prometheus UI에서 실시간 메트릭 쿼리 및 확인이 가능합니다.


📝 Step 3: Grafana 설치 및 대시보드 설정

Grafana 설치:

helm install grafana grafana/grafana --namespace monitoring

Grafana 접속:

kubectl get pods -n monitoring -l app.kubernetes.io/name=grafana
kubectl port-forward -n monitoring svc/grafana 3000:80

브라우저 접속: http://localhost:3000

  • 기본 로그인 정보:
    • 사용자명: admin
    • 비밀번호: Helm 설치 시 출력된 정보를 사용 (또는 초기 비밀번호: admin)

Prometheus 데이터 소스 추가:

  1. Grafana UI → "Configuration" → "Data Sources" → "Add data source" 클릭
  2. "Prometheus" 선택 후 URL에 http://prometheus-server.monitoring.svc.cluster.local 입력
  3. "Save & Test" 클릭하여 연결 확인

🚀 3. 실전 예시: Grafana 대시보드 구성 및 경고 설정

🧩 예시 1: Kubernetes 클러스터 모니터링 대시보드 만들기

대시보드 생성:

  1. Grafana UI → "Dashboards" → "New Dashboard" 클릭
  2. "Add new panel" → 쿼리 입력 (예시: CPU 사용량 조회)
sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (namespace)
  1. 그래프 형태 선택 후 저장

결과: 실시간으로 네임스페이스별 CPU 사용량을 시각화할 수 있습니다.


🧩 예시 2: 경고(Alert) 설정으로 문제 감지하기

경고 설정 방법:

  1. 대시보드 패널 편집 → "Alert" 탭 선택
  2. 조건 입력 (예시: CPU 사용률 80% 초과 시 경고)
sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (namespace) > 0.8
  1. 이메일, Slack 등 알림 채널 연결

효과: CPU 사용량이 임계치를 초과하면 자동으로 알림을 받아 즉시 대응할 수 있습니다.


⚙️ 4. Prometheus와 Grafana 사용 시 유용한 팁과 주의사항

💡 효율적인 사용을 위한 팁

Node Exporter 설치: 노드 레벨 메트릭 수집 확대
Alertmanager 사용: 다양한 경고 수신 채널 관리 가능
사전 제작된 Grafana 대시보드 사용: 설치 시간 절약 (Grafana Dashboard Marketplace 이용)
Persistent Volume 사용: 메트릭 데이터 영구 보존
Grafana 사용자 권한 설정: 데이터 접근 제어 강화

⚠️ 주의사항

✔️ Prometheus 데이터 보존 기간 관리: 장기 보존 시 스토리지 용량 증가 주의
✔️ 대시보드 과다 생성 방지: 과도한 패널 사용 시 성능 저하 발생 가능
✔️ 경고 설정 시 민감도 조정 필요: 과도한 알림은 경고 무시로 이어질 수 있음
✔️ 네트워크 보안 강화: 외부 접근 시 인증 및 방화벽 설정 필수


📝 결론

Prometheus와 Grafana를 함께 사용하면 Kubernetes 클러스터의 상태를 실시간으로 모니터링하고 빠른 문제 감지가 가능합니다. 리소스 사용량, 애플리케이션 상태, 시스템 지표 등을 시각화하여 운영 효율성을 극대화할 수 있으며, 적절한 경고 설정으로 서비스 안정성을 높일 수 있습니다.

지금 Prometheus와 Grafana를 도입해 Kubernetes 모니터링 시스템을 구축해보세요! 📊🚀

👉 다음 글에서는 "Kubernetes 네트워크 정책과 보안 설정"을 다룹니다. 많은 기대 부탁드립니다!


🏷️ 추천 키워드

  1. Prometheus 사용법
  2. Grafana 대시보드 설정
  3. Kubernetes 모니터링 도구
  4. 실시간 시스템 모니터링
  5. Prometheus와 Grafana 연동 방법
  6. Kubernetes 메트릭 수집
  7. Alertmanager 경고 설정
  8. 클러스터 리소스 모니터링
  9. Grafana 사용자 권한 관리
  10. Kubernetes 운영 최적화

Prometheus와 Grafana로 안정적인 클러스터 모니터링을 시작하세요! 🚀

반응형