📊 모니터링 & 로깅: Prometheus, Grafana, ELK, Loki
"장애는 언젠가 반드시 발생한다. 중요한 건 그것을 얼마나 빨리 알아채는가다."
시스템이 커질수록 "지금 무슨 일이 일어나고 있는지"를 아는 것이 점점 어려워집니다. 모니터링과 로깅은 이 가시성(Observability)을 확보하는 핵심 도구입니다.
📌 목차
1️⃣ 메트릭 vs 로그: 무엇이 다른가
메트릭(Metric)로그(Log)
| 형태 | 숫자 (CPU 사용률, 요청 수 등) | 텍스트 (이벤트 기록) |
| 용도 | "지금 상태가 어떤가"를 빠르게 파악 | "정확히 무슨 일이 있었는가" 상세 추적 |
| 저장 비용 | 낮음 (시계열 압축) | 높음 (텍스트 양이 많음) |
| 대표 도구 | Prometheus | ELK, Loki |
💡 보통 메트릭으로 이상을 감지하고, 로그로 원인을 파악하는 방식으로 함께 사용합니다.
2️⃣ Prometheus
시계열 메트릭 수집의 사실상 표준(De facto standard) 도구입니다. 애플리케이션이 /metrics 엔드포인트를 노출하면, Prometheus가 주기적으로 Pull 방식으로 수집합니다.
[App] --/metrics--> [Prometheus 서버] --쿠리--> [Grafana]
▲ Pull 방식
PromQL 예시
# 지난 5분간 초당 평균 요청 수
rate(http_requests_total[5m])
# CPU 사용률이 80% 넘는 인스턴스 찾기
avg(rate(container_cpu_usage_seconds_total[5m])) by (instance) > 0.8
핵심 개념
- Exporter: 애플리케이션의 메트릭을 Prometheus 형식으로 노출시켜주는 도구 (node_exporter 등)
- Alertmanager: 정의된 규칙에 따라 Slack, PagerDuty 등으로 알림 전송
3️⃣ Grafana
Prometheus를 포함한 다양한 데이터 소스를 시각화 대시보드로 보여주는 도구입니다. 직접 도구를 만들 필요 없이 대부분의 기술 스택(Prometheus, MySQL, Loki, Elasticsearch 등)을 지원합니다.
데이터 소스 (Prometheus, Loki, MySQL...) ──▶ Grafana ──▶ 대시보드 / 알림
활용 팁
- 미리 만들어진 Grafana 대시보드 템플릿을 가져와 바로 사용 가능
- 하나의 대시보드에서 메트릭과 로그를 함께 볼 수 있어 문제 진단이 빨라짐
4️⃣ ELK Stack (Elasticsearch, Logstash, Kibana)
로그를 **수집(Logstash) → 저장/검색(Elasticsearch) → 시각화(Kibana)**하는 3단계 스택입니다.
[App 로그] ──▶ Logstash(수집/가공) ──▶ Elasticsearch(저장/검색) ──▶ Kibana(시각화)
Logstash 설정 예시
input {
file { path => "/var/log/app/*.log" }
}
filter {
grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}" } }
}
output {
elasticsearch { hosts => ["localhost:9200"] }
}
특징
- 강력한 전문 검색(Full-text search) 기능
- 대용량 로그 처리에 강점, 다만 리소스 소모가 크고 운영 복잡도가 높음
- Logstash 대신 경량 수집기 Filebeat를 쓰는 조합(EFK)도 널리 사용됨
5️⃣ Loki
Grafana Labs가 만든 경량 로그 수집 시스템입니다. Elasticsearch처럼 로그 전체를 인덱싱하지 않고, 레이블(Label) 기반으로만 인덱싱해 훨씬 가볍습니다.
"Prometheus for logs"라고 불리는 이유:
- 레이블 기반 쿼리 (PromQL과 유사한 LogQL)
- Grafana와 완벽 통합
LogQL 예시
{app="my-service", level="error"} |= "timeout"
ELK vs Loki
ELKLoki
| 인덱싱 방식 | 전문 인덱싱 (모든 필드) | 레이블만 인덱싱 |
| 리소스 소모 | 높음 | 낮음 |
| 검색 능력 | 매우 강력 (복잡한 검색 가능) | 상대적으로 단순 |
| 적합한 규모 | 대규모, 복잡한 로그 분석 | 중소규모, Grafana 생태계 사용자 |
6️⃣ 스택 조합 추천
소규모 프로젝트:
Prometheus + Grafana + Loki
→ 가볍고 Grafana 하나에서 메트릭/로그 통합 조회
대규모/복잡한 검색 요구:
Prometheus + Grafana + ELK(EFK)
→ 강력한 로그 검색이 필요한 경우
💡 시작 팁: 처음 모니터링을 도입한다면 Prometheus + Grafana만으로 시작하세요. 로그가 정말 필요해지는 시점(에러 원인 추적이 잦아질 때)에 Loki나 ELK를 추가해도 늦지 않습니다.
🔚 마무리
모니터링과 로깅은 "장애가 난 다음에" 필요성을 느끼는 경우가 많습니다. 하지만 시스템을 처음 구축할 때부터 최소한의 메트릭 수집(Prometheus)과 대시보드(Grafana)를 함께 세팅해두는 습관을 들이는 것이 장기적으로 훨씬 이득입니다.
'DevOps' 카테고리의 다른 글
| [DevOps] 클라우드 플랫폼 학습 (0) | 2026.07.02 |
|---|---|
| [DevOps] 메시징 & 데이터 인프라 학습 (0) | 2026.07.02 |
| [DevOps] IaC 정리 (0) | 2026.07.02 |
| [DevOps] CI/CD 파이프라인 완전 정리 (0) | 2026.07.02 |
| [DevOps] 쿠버네티스 정복하기 (0) | 2026.07.02 |