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의 주요 기능
- 장기 저장 (Long-Term Storage)
- S3, GCS, Azure Blob 같은 오브젝트 스토리지에 Prometheus 메트릭을 저장
- 무제한 저장소 사용 가능
- 전역 쿼리 (Global View)
- 여러 Prometheus 인스턴스에서 수집한 데이터를 하나의 Querier로 통합 조회
- 마치 하나의 거대한 Prometheus처럼 동작
- 중복 제거 (Deduplication)
- 동일 시계열을 여러 인스턴스가 수집할 경우, 자동 중복 제거
- 고가용성 설정에 최적화
- 다운샘플링 (Downsampling)
- 장기 보존을 위해 데이터 해상도를 낮추는 기능
- 저장 공간 최적화 및 빠른 쿼리 가능
- 고가용성 (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를 통해 조회합니다.
⚙️ 설치 및 구성 팁
- Prometheus와 동일 네임스페이스에 Sidecar 배포
- 오브젝트 스토리지 설정 (thanos sidecar 실행 시 --objstore.config 사용)
- Querier, Store Gateway, Compactor를 각각 독립 배포
- Grafana에서 Thanos Querier를 Prometheus 데이터소스로 등록
📦 운영 시 고려사항
- 오브젝트 스토리지 비용 고려 (특히 GCS/S3의 Storage + Request 요금)
- 다운샘플링 주기와 데이터 보존 기간은 팀의 요구에 맞게 조절
- 경량 Prometheus + Thanos 구조로 불필요한 로컬 저장소를 최소화할 수 있음
📝 마무리
Thanos는 기존 Prometheus를 클라우드 네이티브 환경에 맞게 진화시킨 확장 솔루션입니다. 단일 Prometheus에 의존하던 구조를 벗어나 장기 저장, 고가용성, 전역 쿼리 등을 구현할 수 있게 해주죠. 특히 쿠버네티스, 멀티 클러스터, 하이브리드 클라우드 환경에서 진가를 발휘합니다.
"Prometheus는 현재를, Thanos는 과거를 본다."