DevOps/Monitoring

Prometheus의 한계를 넘다 – Thanos 완전 정복 가이드

BenKangKang 2025. 4. 23. 14:17

Prometheus는 클라우드 네이티브 환경에서 가장 널리 쓰이는 모니터링 시스템입니다. 하지만 장기 저장이 어렵고, 수평 확장이 어렵고, 전역에서 메트릭을 조회할 수 없는 치명적인 단점이 있죠.

바로 이런 문제를 해결하기 위해 등장한 솔루션이 있습니다. 이름부터 강력한 Thanos. 이번 글에서는 Thanos가 어떤 시스템이고, 어떻게 Prometheus를 확장하는지, 어떤 컴포넌트로 구성되는지를 차근차근 살펴보겠습니다.


🧠 Thanos란?

Thanos는 Prometheus 기반 모니터링 시스템을 클라우드 네이티브 환경에 맞게 ‘확장’하고 ‘장기 저장소’를 제공하는 오픈소스 프로젝트입니다.

CNCF(Cloud Native Computing Foundation)의 Incubating 프로젝트로, 대규모 인프라에서도 Prometheus를 안전하고 효율적으로 사용할 수 있도록 돕습니다.


🚨 Prometheus의 한계

한계 설명

장기 저장 미지원 Prometheus는 로컬 디스크에만 데이터를 저장하며 retention 기간이 제한됨
수평 확장 어려움 인스턴스를 여러 개 운영해도 데이터를 통합 조회할 수 없음
중복 제거 불가 동일 시계열 데이터를 여러 인스턴스가 수집 시, 중복으로 처리됨
전역 알람 부재 클러스터별 Alerting은 가능하나 전체 시스템에 대한 알람은 설정하기 어려움

🚀 Thanos의 주요 기능

  1. 장기 저장 (Long-Term Storage)
    • S3, GCS, Azure Blob 같은 오브젝트 스토리지에 Prometheus 메트릭을 저장
    • 무제한 저장소 사용 가능
  2. 전역 쿼리 (Global View)
    • 여러 Prometheus 인스턴스에서 수집한 데이터를 하나의 Querier로 통합 조회
    • 마치 하나의 거대한 Prometheus처럼 동작
  3. 중복 제거 (Deduplication)
    • 동일 시계열을 여러 인스턴스가 수집할 경우, 자동 중복 제거
    • 고가용성 설정에 최적화
  4. 다운샘플링 (Downsampling)
    • 장기 보존을 위해 데이터 해상도를 낮추는 기능
    • 저장 공간 최적화 및 빠른 쿼리 가능
  5. 고가용성 (High Availability)
    • Sidecar와 Prometheus를 다중으로 배포하여 장애에도 무중단 운영 가능

🧩 Thanos 컴포넌트 상세 설명

컴포넌트 역할 상세

Sidecar Prometheus와 함께 배포 Prometheus 데이터를 Querier에 노출하고, 오브젝트 스토리지에 업로드
Store Gateway 오브젝트 스토리지를 쿼리하는 역할 저장된 블록 데이터를 읽어 Querier에 제공
Querier 통합 쿼리 엔진 Prometheus + Store Gateway의 데이터를 통합해서 쿼리 가능
Compactor 블록 정리 및 다운샘플링 여러 블록을 병합하고 오래된 데이터의 해상도 조절
Ruler Alert 및 규칙 처리 Prometheus처럼 Recording Rule 및 Alert Rule 실행 가능

🧭 아키텍처 예시

+----------------------+        +-----------------------+
|     Prometheus 1     |        |     Prometheus 2      |
| +------------------+ |        | +-------------------+ |
| |     Sidecar      | |        | |     Sidecar       | |
+----------------------+        +-----------------------+
            |                             |
            +------------+----------------+
                         ↓
                   +------------+
                   |  Querier   |
                   +------------+
                         ↓
               +------------------+
               |  Store Gateway   |
               +------------------+
                         ↓
               +------------------+
               |   Object Storage |
               +------------------+

이 구조에서 Querier는 여러 Prometheus로부터 데이터를 받아오고, 과거 데이터는 Store Gateway를 통해 조회합니다.


⚙️ 설치 및 구성 팁

  1. Prometheus와 동일 네임스페이스에 Sidecar 배포
  2. 오브젝트 스토리지 설정 (thanos sidecar 실행 시 --objstore.config 사용)
  3. Querier, Store Gateway, Compactor를 각각 독립 배포
  4. Grafana에서 Thanos Querier를 Prometheus 데이터소스로 등록

📦 운영 시 고려사항

  • 오브젝트 스토리지 비용 고려 (특히 GCS/S3의 Storage + Request 요금)
  • 다운샘플링 주기데이터 보존 기간은 팀의 요구에 맞게 조절
  • 경량 Prometheus + Thanos 구조로 불필요한 로컬 저장소를 최소화할 수 있음

📝 마무리

Thanos는 기존 Prometheus를 클라우드 네이티브 환경에 맞게 진화시킨 확장 솔루션입니다. 단일 Prometheus에 의존하던 구조를 벗어나 장기 저장, 고가용성, 전역 쿼리 등을 구현할 수 있게 해주죠. 특히 쿠버네티스, 멀티 클러스터, 하이브리드 클라우드 환경에서 진가를 발휘합니다.

"Prometheus는 현재를, Thanos는 과거를 본다."