Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Thanos — długoterminowe przechowywanie metryk Prometheus w S3

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Prometheus jest doskonały do zbierania i przechowywania metryk — ale domyślnie tylko przez 15 dni, bez HA i bez globalnego widoku wielu klastrów. Thanos rozwiązuje te problemy: dodaje nieograniczone przechowywanie w object storage (S3, MinIO, GCS), deduplikację danych z par HA i jeden endpoint zapytań dla całej infrastruktury.

Architektura Thanos — komponenty

Komponent Rola Port (domyślny)
Sidecar Upload bloków TSDB do S3, gRPC proxy do Prometheus 10901 (gRPC), 10902 (HTTP)
Store Gateway Serwuje dane z S3 przez gRPC (dla Query) 10901 (gRPC), 10902 (HTTP)
Compactor Deduplication, downsampling, compaction w S3 10902 (HTTP only)
Query (Querier) Globalny endpoint PromQL — łączy Sidecar + Store 10901 (gRPC), 10902 (HTTP/UI)
Query Frontend Cache i split zapytań (opcjonalny) 10902 (HTTP)
Ruler Globalne recording rules i alerty 10901, 10902

Konfiguracja — bucket S3/MinIO

Wszystkie komponenty Thanos korzystają z tego samego pliku konfiguracji bucket. Utwórz bucket.yaml:

# bucket.yaml — konfiguracja S3/MinIO
type: S3
config:
  bucket: "thanos-metrics"
  endpoint: "minio.example.com:9000"   # lub s3.amazonaws.com dla AWS
  access_key: "AKIAIOSFODNN7EXAMPLE"
  secret_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
  insecure: true                         # false dla HTTPS / AWS S3
# Utwórz bucket w MinIO przez mc
mc alias set myminio http://minio.example.com:9000 ACCESS_KEY SECRET_KEY
mc mb myminio/thanos-metrics

Thanos Sidecar — obok Prometheus

Sidecar uruchamiasz obok Prometheusa. Prometheus MUSI mieć flagę --storage.tsdb.min-block-duration=2h i --storage.tsdb.max-block-duration=2h (bloki co 2h — Sidecar uploaduje kompletne bloki):

thanos sidecar \
  --prometheus.url=http://localhost:9090 \
  --tsdb.path=/var/lib/prometheus \
  --objstore.config-file=/etc/thanos/bucket.yaml \
  --grpc-address=0.0.0.0:10901 \
  --http-address=0.0.0.0:10902

Thanos Store Gateway — dane historyczne z S3

thanos store \
  --objstore.config-file=/etc/thanos/bucket.yaml \
  --data-dir=/var/lib/thanos/store \
  --grpc-address=0.0.0.0:10901 \
  --http-address=0.0.0.0:10902 \
  --index-cache-size=500MB \
  --chunk-pool-size=2GB

Thanos Query — globalny endpoint PromQL

Query łączy wszystkie Sidecar i Store Gateway w jeden punkt zapytań. Flaga --query.replica-label wskazuje label używany do deduplikacji (np. replica — różne wartości tego labela w Prometheus HA pair):

thanos query \
  --grpc-address=0.0.0.0:10901 \
  --http-address=0.0.0.0:10902 \
  --query.replica-label=replica \
  --store=sidecar-1:10901 \
  --store=sidecar-2:10901 \
  --store=store-gateway:10901

Thanos Query ma wbudowane UI dostępne na porcie 10902 — identyczne z Prometheus UI. Możesz też dodać jako datasource w Grafanie (endpoint HTTP).

Thanos Compactor — deduplication i downsampling

thanos compact \
  --objstore.config-file=/etc/thanos/bucket.yaml \
  --data-dir=/var/lib/thanos/compact \
  --http-address=0.0.0.0:10902 \
  --retention.resolution-raw=30d \
  --retention.resolution-5m=90d \
  --retention.resolution-1h=365d \
  --wait \
  --wait-interval=15m

Compactor tworzy trzy poziomy rozdzielczości: raw (oryginalna rozdzielczość), 5m (1 punkt co 5 minut), 1h (1 punkt co godzinę). Stare dane są automatycznie downsamplowane — zapytania o dane sprzed roku są szybkie bo operują na blokach 1h zamiast 1-minutowych.

Thanos vs Grafana Mimir — kiedy co wybrać?

Cecha Thanos Grafana Mimir
Architektura Sidecars + istniejące Prometheus Centralne write/read path (Cortex-like)
Retrofit Łatwy (sidecar obok Prometheus) Wymaga remote_write z Prometheus
Skalowanie Dobre (dodajesz instancje) Lepsze dla masowego ingestu
Złożoność Średnia Wysoka (więcej komponentów)
Koszt zasobów Niższy przy <100 Prometheus Efektywniejszy przy >1000 req/s
Kiedy wybrać Istniejące Prometheus, <10 klastrów Greenfield, duża skala, SaaS

Najczęstsze pytania

Czym jest Thanos i dlaczego warto go używać zamiast samego Prometheus? +
Prometheus przechowuje metryki lokalnie, domyślnie 15 dni, bez HA i bez globalnego widoku wielu instancji. Thanos dodaje: nieograniczone przechowywanie w S3/GCS/Azure Blob, deduplikację danych z wielu Prometheus (HA pair), globalny widok przez Thanos Query (jeden endpoint PromQL dla wszystkich instancji), downsample (kompresja starych danych) i reguły globalne (recording rules i alerty na zagregowanych danych). Idealne dla środowisk z wieloma klastrami lub długoterminową retencją.
Jak działa Thanos Sidecar? +
Thanos Sidecar to proces uruchomiony obok Prometheus (jako sidecar container lub osobny proces). Monitoruje katalog TSDB Prometheusa — gdy Prometheus "zamknie" blok danych (co 2h), Sidecar uploaduje go do obiektu storage (S3). Równocześnie Sidecar wystawia gRPC endpoint pozwalający Thanos Query odpytywać Prometheusa o dane bieżące (nie zuploadowane jeszcze do S3). Sidecar nie modyfikuje Prometheusa — jest passive observer.
Co robi Thanos Compactor i kiedy go uruchamiać? +
Thanos Compactor przetwarza bloki w object storage: (1) deduplication — usuwa duplikaty z wielu Prometheus (HA pair), (2) downsampling — tworzy bloki 5m i 1h z bloków 1-minutowych dla starszych danych (oszczędność miejsca i szybsze zapytania), (3) compaction — łączy małe bloki w większe. Compactor MUSI działać jako singleton (tylko jedna instancja na jeden bucket). Uruchamiaj jako --wait (pętla) lub przez cron.
Jaka jest różnica między Thanos a Grafana Mimir? +
Thanos to projekt rozproszony — każda instancja Prometheus zarządza swoimi danymi, Thanos agreguje przy query. Mimir (open-source Grafana Labs) to natywnie distributed TSDB z ingest path (podobnie jak Cortex) — dane trafiają centralnie przez write API. Mimir ma lepszą skalowalność dla masowego ingestu, Thanos jest łatwiejszy do retrofitu istniejącego Prometheus. Mimir wymaga więcej komponentów, Thanos działa z --min-block-duration już bez zmian w Prometheus.
Jak skonfigurować MinIO jako backend S3 dla Thanos? +
MinIO jest w pełni kompatybilny z S3 API. W konfiguracji Thanos (bucket.yaml) ustaw type: S3 z endpoint wskazującym na MinIO (np. minio:9000), access_key i secret_key, insecure: true jeśli brak TLS. Utwórz wcześniej bucket przez mc alias set i mc mb. Thanos nie widzi różnicy między AWS S3 a MinIO — wszystkie operacje (upload, list, get) działają identycznie.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.