
Grafana는 “보여주는 도구”, Grafana Loki는 “로그를 모아서 저장하고 검색하는 도구”입니다.
둘은 경쟁 제품이 아니라 서로 같이 사용하는 관계라고 보면 됩니다. 👍
🎯 한 줄로 먼저 이해하기
Grafana
= 데이터를 화면에 보여주는 대시보드 📊
Loki
= 서버/Pod에서 발생한 로그를 모아두는 저장소 📚
예를 들어 Kubernetes에서 장애가 발생했다고 해보겠습니다.
Grafana Dashboard
CPU 사용률 95% 🔥
Memory 사용률 90%
GPU 사용률 100%
Pod Restart 5회
↓
"왜 재시작했지?"
↓
Grafana에서 Loki 로그 조회
↓
OOMKilled
CUDA error
Connection timeout
↓
원인 확인 🔍
즉, Grafana에서 이상 현상을 발견하고 → Loki 로그를 조회해서 원인을 찾는 구조입니다.
1️⃣ Grafana가 뭐야?
Grafana는 여러 시스템의 데이터를 가져와서 그래프, 표, 게이지 형태로 보여주는 시각화 도구입니다.
예를 들어 GPU 서버를 운영한다고 하면 이런 화면을 만들 수 있습니다.
┌──────────────────────────────┐
│ GPU Monitoring │
├──────────────────────────────┤
│ GPU Utilization 87% │
│ GPU Memory 72% │
│ GPU Temperature 67°C │
│ GPU Power 580W │
│ GPU ECC Error 0 │
└──────────────────────────────┘
Grafana가 직접 이런 데이터를 만드는 것은 아닙니다.
보통 뒤에 데이터 소스(Data Source)가 있습니다.
대표적인 것이:
Prometheus
Loki
OpenSearch
Elasticsearch
InfluxDB
MySQL
PostgreSQL
입니다.
그래서 구조가:
Prometheus ─┐
Loki ─┤
OpenSearch ─┤
MySQL ─┤
↓
Grafana
↓
📊 Dashboard
이렇게 됩니다.
2️⃣ 그럼 Grafana Dashboard는 뭐야?
Grafana라는 프로그램 안에서 만들어 놓은 모니터링 화면을 Dashboard라고 합니다.
예를 들어 Kubernetes 대시보드를 만들면:
📊 Kubernetes Dashboard
Cluster
├─ Node CPU
├─ Node Memory
├─ Disk 사용량
├─ Network
│
Pod
├─ CPU
├─ Memory
├─ Restart Count
└─ Status
│
GPU
├─ GPU Util
├─ GPU Memory
├─ Temperature
├─ Power
└─ ECC Error
같이 볼 수 있습니다.
사용자 환경에서 많이 사용하는
Prometheus
↓
DCGM Exporter
↓
GPU Metric
↓
Grafana Dashboard
도 대표적인 Grafana 사용 방법입니다.
예를 들어:
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_GPU_TEMP
같은 GPU Metric을 Prometheus가 저장하고 Grafana가 그래프로 보여주는 것입니다.
3️⃣ Grafana Loki는 뭐야?
여기서 이름 때문에 많이 헷갈립니다.
Grafana Loki도 Grafana Labs에서 만든 제품이지만 Grafana Dashboard와 역할은 완전히 다릅니다.
Loki는 쉽게 말해서:
📚 로그를 모아 저장하고 검색할 수 있도록 해주는 시스템
입니다.
예를 들어 Kubernetes Pod에서 다음과 같은 로그가 발생한다고 해보겠습니다.
2026-08-07 10:01:20 INFO Starting application
2026-08-07 10:01:25 INFO Connected database
2026-08-07 10:03:14 ERROR Database connection timeout
2026-08-07 10:03:15 ERROR Application crashed
이 로그들을 Loki에 저장합니다.
Pod A ─┐
Pod B ─┤
Pod C ─┤
Node ─┤
↓
Loki
↓
로그 저장 📚
그리고 Grafana에서 Loki를 연결하면:
Grafana
↓
Data Source
↓
Loki
↓
Pod 로그 검색
이 가능합니다.
4️⃣ Grafana vs Loki 가장 중요한 차이
구분GrafanaLoki
| 역할 | 시각화 | 로그 저장/검색 |
| 쉽게 말하면 | 📺 모니터 | 📚 로그 창고 |
| 저장 | 주 역할 아님 | 로그 저장 |
| 검색 | Data Source를 통해 조회 | 로그 검색 |
| Dashboard | ✅ | ❌ |
| 로그 관리 | 조회 화면 제공 | ✅ 실제 로그 관리 |
| Prometheus 연결 | ✅ | 보통 별개 |
| Kubernetes | 모니터링 화면 | Pod 로그 저장 |
즉,
Grafana ≠ Loki
이며
Grafana + Loki
로 사용하는 경우가 많습니다.
5️⃣ Prometheus까지 넣으면 훨씬 이해하기 쉽습니다 ⭐
실무에서는 보통 이 3가지를 같이 봐야 합니다.
Prometheus
= Metric 저장
Loki
= Log 저장
Grafana
= Metric + Log 시각화
조금 더 쉽게 비유하면 병원과 비슷합니다. 🏥
Prometheus
= 혈압 / 체온 / 심박수 측정
Loki
= 의사가 작성한 진료기록
Grafana
= 모니터 화면
서버 장애에서도 마찬가지입니다.
Prometheus를 보면:
CPU = 95%
Memory = 98%
GPU = 100%
라는 숫자 상태를 알 수 있습니다.
하지만 이것만 보면:
❓ 왜 Memory가 98%가 됐지?
를 알기 어렵습니다.
그래서 Loki를 봅니다.
10:30:21 ERROR CUDA OOM
10:30:22 ERROR Worker terminated
10:30:23 ERROR Pod restarting
그러면 원인을 알 수 있습니다.
6️⃣ Kubernetes에서는 Loki가 어떻게 로그를 가져올까?
여기서 중요한 녀석이 하나 더 등장합니다.
보통 Loki가 Kubernetes Pod에 직접 들어가서 로그를 가져오는 방식이 아니라 로그 수집 Agent를 사용합니다.
예를 들면:
Pod
↓
Container Log
↓
Fluent Bit / Grafana Alloy
↓
Loki
↓
Grafana
전체 구조를 보면:
┌──────── Kubernetes ────────┐
Pod A ─┐
Pod B ─┤
Pod C ─┤
↓
Container Logs
↓
Fluent Bit / Alloy
↓
Loki
│
│ Log
↓
Grafana
Node Exporter
↓
Prometheus
│
│ Metric
↓
Grafana
DCGM Exporter
↓
Prometheus
│
↓
Grafana
└────────────────────────────┘
이 구조가 상당히 중요합니다.
7️⃣ GPU 장애 상황으로 예를 들어보겠습니다 🎮
예를 들어 GPU 3번에서 문제가 발생했다고 해보겠습니다.
Grafana에서 먼저:
GPU 0 98%
GPU 1 97%
GPU 2 96%
GPU 3 0% ⚠️
GPU 4 97%
GPU 5 98%
GPU 6 96%
GPU 7 98%
를 발견합니다.
Prometheus/DCGM 데이터를 보고:
Grafana
↓
GPU 3 사용률 0%
을 알았습니다.
그런데 왜 GPU 3이 0%인지는 이것만으로 알기 어렵습니다.
그래서 Loki 로그를 확인합니다.
Grafana
↓
Loki
↓
CUDA error:
CUDA-capable device is busy or unavailable
Xid 79
GPU has fallen off the bus
이런 로그를 찾게 됩니다.
즉:
Prometheus
"GPU 3에 문제가 있다."
Loki
"GPU 3에 왜 문제가 생겼는지 로그를 찾아보자."
Grafana
"두 정보를 한 화면에서 보자."
가 되는 겁니다.
8️⃣ Loki와 OpenSearch도 비슷하지 않아?
맞습니다. 👍
최근 공부하신 흐름과 연결하면 여기서 아주 중요한 차이가 있습니다.
둘 다 로그 검색이 가능합니다.
Fluent Bit
↓
┌───────┬────────────┐
↓ ↓
Loki OpenSearch
↓ ↓
Grafana Grafana
하지만 성격이 조금 다릅니다.
구분LokiOpenSearch
| 주요 목적 | 로그 | 검색/분석 |
| 구조 | 비교적 단순 | 상대적으로 복잡 |
| 리소스 | 상대적으로 가벼움 | 상대적으로 큼 |
| 로그 검색 | ✅ | ✅ |
| 전문 검색 | 기본적 | 매우 강력 |
| Full Text Search | 상대적으로 제한 | ⭐ 강력 |
| Grafana 연동 | ⭐ 매우 좋음 | ✅ 가능 |
| K8s 로그 | ⭐ 적합 | ✅ 적합 |
| 대규모 분석 | 가능 | ⭐ 강력 |
그래서 단순히:
Kubernetes 운영 로그를 Grafana에서 보고 싶다.
라면 Loki가 상당히 좋은 선택입니다.
반대로:
로그를 복잡하게 분석하고 검색하고 보안 로그까지 통합하겠다.
면 OpenSearch가 유리한 경우가 많습니다.
🎯 최종적으로 이것만 기억하세요
Grafana
📊 보여주는 곳
↑
┌───────┴───────┐
│ │
Prometheus Loki
📈 Metric 📚 Log
↑ ↑
Exporter들 Fluent Bit / Alloy
↑ ↑
CPU / Memory / GPU Pod / App
핵심 3줄
Prometheus = 숫자를 저장합니다.
CPU 80%, Memory 70%, GPU 95% 같은 Metric입니다.
Loki = 로그를 저장합니다.
ERROR, WARN, CUDA Error, Pod 로그 같은 Log입니다.
Grafana = 둘을 화면으로 보여줍니다. 📊
Prometheus와 Loki를 Data Source로 연결해서 Metric + Log를 한곳에서 분석할 수 있습니다.
특히 Kubernetes/GPU 운영 환경에서는 DCGM Exporter → Prometheus → Grafana + Fluent Bit/Alloy → Loki → Grafana 조합으로 이해하면 전체 모니터링 구조가 한 번에 잡힙니다.
댓글