Kubernetes/Kubernetes Basics

📌 Kubernetes 로그 & 모니터링 운영 전략

ygtoken 2025. 3. 3. 07:48
728x90

 

1️⃣ Kubernetes에서 로그와 모니터링이 중요한 이유?

 

Kubernetes 환경에서는 컨테이너가 동적으로 생성되고 삭제되므로,

전통적인 서버 로그 관리 방식이 적용되지 않습니다.

 

Kubernetes 운영 환경에서 안정성을 유지하려면 어떻게 해야 할까요?

 

로그 수집을 통해 애플리케이션 상태 모니터링

클러스터 리소스 사용량을 지속적으로 추적하여 장애 예방

문제가 발생했을 때 신속하게 원인을 분석할 수 있도록 로그 관리 강화

 


 

2️⃣ Kubernetes에서 로그와 모니터링이 필요한 주요 대상

 

📌 로그와 모니터링이 필요한 주요 리소스

대상설명주요 도구

컨테이너 로그 애플리케이션의 실행 상태와 에러 로그 Loki, Fluentd, Promtail
Pod 로그 Kubernetes Pod에서 실행되는 모든 로그 kubectl logs
Kubernetes 이벤트 스케줄링, 네트워크 장애, 리소스 할당 문제 감지 Prometheus, Alertmanager
클러스터 메트릭 CPU, 메모리, 네트워크 사용량 추적 Prometheus, Grafana

이 모든 데이터를 효과적으로 수집하고 분석해야 Kubernetes를 안정적으로 운영할 수 있습니다!

 


 

3️⃣ Kubernetes에서 로그 수집하기 (Loki + Promtail + Grafana)

 

📌 Kubernetes에서 로그를 효과적으로 관리하려면 중앙 집중식 로그 수집 시스템이 필요합니다.

 

Loki + Promtail + Grafana를 활용하면 로그를 효율적으로 수집하고 시각화할 수 있습니다!

 

📌 로그 수집 시스템 구조

애플리케이션 로그 → Promtail(Log Agent) → Loki(Log 저장소) → Grafana(시각화)

 


 

✅ Step 1: Loki 및 Promtail 설치 (Helm 사용)

 

📌 Loki + Promtail을 Helm Chart로 배포

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install loki grafana/loki-stack --set promtail.enabled=true

 

📌 배포 확인

kubectl get pods -n default

Loki와 Promtail이 정상적으로 실행되는지 확인!

 


 

✅ Step 2: Grafana에서 Loki 로그 데이터 시각화

 

📌 Grafana에서 Loki를 데이터 소스로 추가

1. Grafana 로그인 (http://<Grafana-IP>:3000)

2. “Configuration” → “Data Sources” → “Add data source”

3. “Loki” 선택 후 http://loki.default.svc.cluster.local:3100 입력

4. “Save & Test” 클릭

 

📌 로그 조회

1. “Explore” 메뉴로 이동

2. “Loki” 데이터 소스 선택

3. {job="kubernetes-pods"} 입력 후 “Run Query”

 

이제 모든 Pod의 로그를 중앙에서 실시간으로 조회 가능! 🚀

 


 

4️⃣ Kubernetes 모니터링 (Prometheus + Grafana)

 

📌 Kubernetes 클러스터와 애플리케이션 상태를 실시간으로 모니터링하려면 Prometheus를 활용해야 합니다.

 

Prometheus + Grafana를 활용하면 클러스터 메트릭을 시각적으로 모니터링 가능!

 

📌 모니터링 시스템 구조

Kubernetes 클러스터 → Prometheus(데이터 수집) → Grafana(시각화) → Alertmanager(알림)

 


 

✅ Step 1: Prometheus 및 Grafana 설치 (Helm 사용)

 

📌 Prometheus + Grafana 배포

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack

 

📌 배포 확인

kubectl get pods -n default

Prometheus & Grafana가 정상적으로 실행되는지 확인!

 


 

✅ Step 2: Grafana에서 Prometheus 데이터 시각화

 

📌 Grafana에서 Prometheus를 데이터 소스로 추가

1. Grafana 로그인 (http://<Grafana-IP>:3000)

2. “Configuration” → “Data Sources” → “Add data source”

3. “Prometheus” 선택 후 http://prometheus-server.default.svc.cluster.local 입력

4. “Save & Test” 클릭

 

📌 모니터링 대시보드 추가

1. “Create” → “Import” 선택

2. 다음 ID를 입력하여 대시보드 추가

Kubernetes 클러스터 상태3119

Kubernetes 노드 리소스 사용량1860

Pod & 컨테이너 리소스 사용량7637

3. “Load” 클릭 후 데이터 소스 선택

4. “Import” 클릭

 

이제 Kubernetes 클러스터 상태를 한눈에 모니터링 가능!

 


 

5️⃣ Kubernetes 이벤트 & 알림 설정 (Alertmanager 사용)

 

📌 Alertmanager를 활용하면 특정 이벤트 발생 시 이메일, Slack 등으로 알림을 받을 수 있습니다.

 

📌 Alertmanager 기본 설정 (alert-rules.yaml)

groups:
- name: example
  rules:
  - alert: HighPodCPU
    expr: avg by (pod) (rate(container_cpu_usage_seconds_total[5m])) > 0.8
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage detected"

 

📌 적용 명령어

kubectl apply -f alert-rules.yaml

CPU 사용량이 80%를 넘으면 Alertmanager가 경고 메시지를 보냄!

 


 

6️⃣ Kubernetes 로그 & 모니터링 운영 전략

 

📌 효율적인 운영을 위해 로그 & 모니터링을 체계적으로 구성해야 합니다.

 

대상도구설명

로그 수집 Promtail, Fluentd Pod & 컨테이너 로그 수집
로그 저장 Loki 중앙 집중식 로그 저장
로그 분석 Grafana 실시간 로그 분석
메트릭 수집 Prometheus 클러스터 리소스 사용량 모니터링
알림 설정 Alertmanager 이벤트 발생 시 이메일/Slack 알림

올바른 로그 & 모니터링 설정을 하면 Kubernetes 운영이 훨씬 쉬워집니다! 🚀

 


 

📌 결론: Kubernetes 로그 & 모니터링을 자동화하면 운영이 쉬워진다!

 

Loki + Promtail을 사용하면 로그를 중앙에서 쉽게 관리 가능

Prometheus + Grafana를 사용하면 실시간 클러스터 모니터링 가능

Alertmanager를 사용하면 문제 발생 시 즉시 알림 받을 수 있음

 

🔥 이제 Kubernetes 운영 환경을 더욱 안정적으로 유지할 수 있습니다!

 

 

728x90