1️⃣ 파이프라인 모니터링 (Pipeline Monitoring)
👉 **“데이터/작업이 제대로 흘러가고 있나?”**에 초점
무엇을 보나?
- 작업 성공/실패 여부
- 단계별 실행 시간 (병목 구간)
- 지연(latency), 처리량(throughput)
- 데이터 품질 (누락, 중복, 스키마 변경 등)
- 재시도 횟수, 에러 로그
예시
- ETL / ELT 파이프라인 (Airflow, Argo, Prefect)
- CI/CD 파이프라인 (GitHub Actions, Jenkins)
- 스트리밍 파이프라인 (Kafka, Spark Streaming)
대표 지표
- DAG 성공률
- 평균 실행 시간
- 실패 태스크 수
- SLA/SLO 준수 여부
2️⃣ 클러스터 모니터링 (Cluster Monitoring)
👉 **“인프라가 건강한가?”**에 초점
무엇을 보나?
- CPU / Memory / Disk / Network 사용량
- 노드 상태 (Ready / NotReady)
- Pod / 컨테이너 상태
- 리소스 부족(OOM, CPU Throttling)
- 장애 발생 여부
예시
- Kubernetes 클러스터
- Spark / Hadoop 클러스터
- VM / Bare-metal 서버 팜
대표 지표
- 노드별 리소스 사용률
- Pod 재시작 횟수
- 노드 장애 수
- 리소스 요청 vs 실제 사용량
3️⃣ 한눈에 비교하면
구분파이프라인 모니터링클러스터 모니터링
| 관점 | 애플리케이션 / 작업 흐름 | 인프라 / 리소스 |
| 관심사 | 성공했나? 늦지 않나? | 살아있나? 과부하인가? |
| 장애 원인 | 로직, 데이터, 의존성 | CPU, 메모리, 노드 |
| 대표 도구 | Airflow UI, Dagster, MLflow | Prometheus, Grafana, kube-state-metrics |
4️⃣ 왜 둘 다 필요할까?
- 파이프라인 실패 → 원인은 클러스터 리소스 부족일 수 있음
- 클러스터는 정상 → 파이프라인 로직이 잘못됐을 수도 있음
👉 그래서 실무에선
파이프라인 모니터링 + 클러스터 모니터링을 연결해서 봅니다.
---
1️⃣ 전체 아키텍처 (개념 그림)
┌──────────────────────┐
│ Grafana │◀─────────────┐
│ (통합 대시보드) │ │
└─────────▲────────────┘ │
│ │
┌─────────┴──────────┐ ┌─────────┴──────────┐
│ Prometheus │ │ Loki / ELK │
│ (Metrics 수집) │ │ (Logs 수집) │
└─────────▲──────────┘ └─────────▲──────────┘
│ │
──────────────── Kubernetes Cluster ────────────────
│ │
┌──────┴──────┐ ┌──────┴──────┐
│ Airflow │ │ Kafka │
│ (Scheduler, │ │ (Broker, │
│ Workers) │ │ ZK/KRaft) │
└──────▲──────┘ └──────▲──────┘
│ │
┌──────┴─────────┐ ┌────────┴────────┐
│ Spark / ETL │ │ Consumers / │
│ Jobs (Pods) │ │ Stream Process │
└────────────────┘ └─────────────────┘
│ Grafana │◀─────────────┐
│ (통합 대시보드) │ │
└─────────▲────────────┘ │
│ │
┌─────────┴──────────┐ ┌─────────┴──────────┐
│ Prometheus │ │ Loki / ELK │
│ (Metrics 수집) │ │ (Logs 수집) │
└─────────▲──────────┘ └─────────▲──────────┘
│ │
──────────────── Kubernetes Cluster ────────────────
│ │
┌──────┴──────┐ ┌──────┴──────┐
│ Airflow │ │ Kafka │
│ (Scheduler, │ │ (Broker, │
│ Workers) │ │ ZK/KRaft) │
└──────▲──────┘ └──────▲──────┘
│ │
┌──────┴─────────┐ ┌────────┴────────┐
│ Spark / ETL │ │ Consumers / │
│ Jobs (Pods) │ │ Stream Process │
└────────────────┘ └─────────────────┘
👉 핵심 포인트
- Kubernetes: 실행 플랫폼
- Airflow: 배치 파이프라인 오케스트레이션
- Kafka: 스트리밍 파이프라인
- Prometheus / Grafana: 메트릭
- Loki / ELK: 로그
2️⃣ Kubernetes 클러스터 모니터링 (인프라 레벨)
📊 반드시 봐야 하는 메트릭
🔹 Node 레벨
- CPU / Memory 사용률
- Disk Pressure
- Network IO
- Node Ready 상태
🔹 Pod / Container 레벨
- Pod 재시작 횟수
- OOMKilled
- CPU Throttling
- Pending 상태 (스케줄 실패)
🔹 Kubernetes 이벤트
- FailedScheduling
- ImagePullBackOff
- CrashLoopBackOff
🛠 필수 컴포넌트
- kube-state-metrics
- node-exporter
- cAdvisor
👉 여기서 잡는 장애
- Airflow task가 안 뜸 → 노드 리소스 부족
- Kafka broker 재시작 반복 → 메모리 부족
- Spark job 느려짐 → CPU Throttling
3️⃣ Airflow 파이프라인 모니터링 (배치)
📌 구조 (K8s 기준)
- Scheduler
- Webserver
- Worker (KubernetesPodOperator or CeleryExecutor)
- Metadata DB (Postgres)
📊 핵심 모니터링 지표
🔹 DAG / Task
- DAG 성공률
- Task 실패율
- Task 실행 시간
- SLA Miss
🔹 Executor / Worker
- Worker Pod 수
- Pending Task 수
- Task Queue 길이
🔹 Airflow 자체 메트릭
- Scheduler Heartbeat
- Zombie Task 수
- DAG Parsing 시간
👉 Prometheus Exporter
- airflow-exporter
- Airflow 2.x built-in metrics
👉 여기서 잡는 장애
- DAG는 성공인데 데이터 없음 → downstream 문제
- Task 지연 → Kafka lag or 리소스 부족
- Scheduler 살아있는데 DAG 미실행 → heartbeat 문제
4️⃣ Kafka 파이프라인 모니터링 (스트리밍)
📌 구조 (K8s 기준)
- Kafka Broker Pods
- Controller (KRaft or Zookeeper)
- Producers
- Consumers (Spark / Flink / Custom)
📊 핵심 메트릭
🔹 Broker
- Under Replicated Partitions
- ISR Shrink / Expand
- Disk Usage
- Request Latency
🔹 Topic / Partition
- 메시지 유입량 (In / Out)
- Retention 상태
- Partition Leader 분산
🔹 Consumer
- Consumer Lag (🔥 핵심)
- Commit 실패
- Rebalance 횟수
👉 여기서 잡는 장애
- 파이프라인 지연 → Consumer lag 폭증
- 데이터 유실 → ISR 깨짐
- 브로커 다운 → 파티션 불균형
5️⃣ 파이프라인 + 클러스터 “연결” 모니터링 (중요 ⭐)
❌ 흔한 실수
- Airflow만 봄
- Kafka lag만 봄
- 클러스터 상태를 따로 봄
✅ 잘하는 팀
하나의 장애 흐름으로 연결
Airflow Task 지연
↓
Worker Pod Pending
↓
Node Memory 95%
↓
Kafka Consumer Lag 증가
- 상단: 비즈니스 파이프라인 상태
- 하단: K8s 리소스 상태
6️⃣ 추천 대시보드 구성
📊 Grafana 대시보드 탭
- Cluster Overview
- Airflow DAG Health
- Kafka Overview
- Consumer Lag
- Critical Alerts
🚨 알람 예시
- Airflow DAG 실패 + Node Memory > 90%
- Kafka Lag > 임계치 + Consumer Pod Restart
- Pod Pending > N분 지속
7️⃣ 한 줄 요약
Kubernetes는 “몸 상태”,
Airflow/Kafka는 “일이 잘 되고 있는지”,
Grafana는 “의사 눈”이다.
'STUDY' 카테고리의 다른 글
| CPU 스케줄링 알고리즘 (0) | 2026.02.09 |
|---|---|
| 운영체제 - 메모리, 프로세스와 스레드 (0) | 2026.02.03 |
| HTTP 프로토콜 & 운영체제 (0) | 2026.01.28 |
| 네트워크 (0) | 2026.01.13 |
| 프로그래밍 패러다임 (0) | 2026.01.06 |