IT개발

로깅과 모니터링: ELK 스택 vs Prometheus & Grafana

우리모두 개발자되기 2025. 4. 26. 09:20

 

로깅과 모니터링: ELK 스택 vs Prometheus & Grafana 비교 분석

클라우드 네이티브 시대에 접어들며, 서비스의 상태를 실시간으로 파악하고 문제를 사전에 감지하는 로깅과 모니터링의 중요성이 그 어느 때보다 커졌습니다. 시스템은 점점 더 복잡해지고 있고, 장애는 점점 더 예측하기 어려워졌습니다. 이럴 때 유용하게 활용되는 대표적인 오픈소스 도구 두 가지가 있습니다. 바로 ELK 스택(Elasticsearch, Logstash, Kibana)Prometheus & Grafana 조합입니다.

이 글에서는 두 스택이 무엇인지, 어떤 차이가 있는지, 실무에서 어떻게 선택하고 구성해야 하는지를 중심으로 깊이 있게 알아보겠습니다.


1. 로깅과 모니터링, 왜 중요한가?

  • **로깅(logging)**은 시스템에서 발생한 이벤트를 기록하는 행위입니다. 예: 에러 로그, 접근 로그, 트랜잭션 로그 등
  • **모니터링(monitoring)**은 시스템 자원(CPU, 메모리, 네트워크 등)이나 애플리케이션 상태를 지속적으로 관찰하고 경고(Alert)를 보내는 작업입니다.

이 두 기능은 각각의 목적이 다르지만 서비스의 가용성과 신뢰성을 확보하기 위한 핵심 요소로, 함께 설계되는 것이 일반적입니다.


2. ELK 스택이란?

구성 요소

  • Elasticsearch: 검색 및 분석을 위한 분산 검색 엔진
  • Logstash: 다양한 형식의 로그를 수집하고 처리하는 파이프라인
  • Kibana: 시각화 대시보드 및 쿼리 도구

동작 흐름

  1. 애플리케이션 로그 수집 (Filebeat 또는 Logstash 활용)
  2. 로그를 파싱 후 Elasticsearch로 전송
  3. Kibana에서 쿼리 및 시각화
[App Logs] → [Filebeat/Logstash] → [Elasticsearch] → [Kibana]

특징

  • 정형/비정형 로그 분석에 강함
  • 복잡한 검색 조건 처리 가능
  • 시계열 기반 모니터링은 한계가 있음
  • 디스크 사용량이 많고 클러스터 설계가 복잡

3. Prometheus & Grafana란?

구성 요소

  • Prometheus: 시계열(time-series) 기반의 모니터링 시스템. 데이터를 직접 수집(pull)함
  • Grafana: 다양한 소스로부터의 데이터를 시각화하는 대시보드

동작 흐름

  1. Prometheus가 Exporter 또는 애플리케이션으로부터 메트릭 수집
  2. 수집된 시계열 데이터 저장
  3. Grafana에서 시각화 및 경고 설정
[Application / Exporter] → [Prometheus] → [Grafana]

특징

  • 모니터링(메트릭 수집)에 특화
  • 경량화된 구성 및 빠른 수집 속도
  • 시계열 데이터에 최적화된 쿼리(PromQL)
  • 로그 수집/분석은 부적합

4. 실무 기준으로 두 스택 비교

항목  ELK 스택 Prometheus & Grafana
주요 목적 로그 수집 및 검색 메트릭 기반 모니터링
데이터 유형 비정형 로그, 텍스트 시계열 수치 데이터
설치 난이도 중간~높음 낮음~중간
저장소 Elasticsearch TSDB(Prometheus 내장)
경고(Alert) 기능 X (외부 연동 필요) O (AlertManager 포함)
확장성 로그량 많을수록 리소스 사용 많음 경량화되어 적은 리소스
사용 예 에러 디버깅, 검색 실시간 성능 모니터링, 알람 설정

5. 어떤 상황에서 어떤 도구를 쓸까?

ELK 스택이 적합한 상황

  • 로그를 자세히 분석하고 검색해야 하는 경우
  • 에러 추적, 사용자 행동 기록 분석
  • DevOps 팀이 로그 기반 디버깅에 익숙한 경우

Prometheus & Grafana가 적합한 상황

  • **리소스 사용량(CPU, 메모리, 네트워크 등)**을 실시간으로 감시해야 할 때
  • 서비스 지연, 트래픽 변화 탐지 등 시계열 기반 알림이 필요한 경우
  • 클러스터(예: 쿠버네티스)의 상태를 정기적으로 수집 및 시각화할 때

두 스택을 함께 사용하는 경우

실제 많은 기업에서는 두 스택을 조합하여 운영합니다.

- 로그 수집 및 분석: ELK
- 실시간 모니터링 및 알림: Prometheus + Grafana

이처럼 역할을 명확히 나누어 사용하는 것이 운영 효율과 문제 해결 속도를 모두 높일 수 있는 방법입니다.


6. 시각 자료

1) ELK 스택 아키텍처 다이어그램

[ Filebeat / Logstash ]
          |
     [Elasticsearch]
          |
        [Kibana]

2) Prometheus & Grafana 아키텍처

[Node Exporter / App Exporter]
            ↓
        [Prometheus]
            ↓
         [Grafana]

이 구조를 통해 수집된 데이터는 실시간 대시보드로 시각화되며, 임계값을 초과할 경우 AlertManager와 연동하여 Slack, 이메일 등으로 알람을 보낼 수 있습니다.


7. 예제: 간단한 Prometheus Exporter 구성

# prometheus.yml
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

해당 설정은 node_exporter로부터 시스템 메트릭을 수집하는 예시입니다.
Grafana에서는 Prometheus를 데이터 소스로 추가하고, 미리 제공된 대시보드 템플릿을 사용하여 빠르게 시각화할 수 있습니다.


8. 결론: 두 스택의 목적과 특징을 이해하자

  • ELK는 텍스트 로그의 수집, 저장, 검색, 시각화에 탁월하며,
  • Prometheus & Grafana는 실시간 시스템/애플리케이션 모니터링과 알람에 강합니다.

둘 중 하나를 고르는 것이 아닌, 업무 목적에 따라 상호 보완적으로 사용하는 전략이 가장 현명한 접근입니다.


9. 마무리하며

효율적인 인프라 운영을 위해선 단순한 모니터링이나 로깅을 넘어서, 장애를 예측하고 대응할 수 있는 체계적인 시스템을 갖추는 것이 중요합니다. ELK와 Prometheus & Grafana는 이를 위한 핵심 도구이며, 각자의 특성을 정확히 파악하고 상황에 맞게 설계한다면 더 안정적인 서비스 운영이 가능할 것입니다.