RousselTMLEARNING

Article · Thanos : de la découverte à l'expertise

Store Gateway et Compactor

1. Store Gateway #

Lire l'historique dans le stockage objet.

Lancer le store #

thanos store \
  --data-dir=/var/thanos/store \
  --objstore.config-file=/etc/thanos/bucket.yml \
  --grpc-address=0.0.0.0:10901 \
  --http-address=0.0.0.0:10902 \
  --index-cache-size=2GB \
  --chunk-pool-size=2GB \
  --store.limits.request-series=500000 \
  --min-time=-90d      # ne servir que les 90 derniers jours (partitionnement temporel)
# Docker Compose (extrait)
  store:
    image: quay.io/thanos/thanos:latest
    command:
      - store
      - --data-dir=/var/thanos/store
      - --objstore.config-file=/etc/thanos/bucket.yml
      - --grpc-address=0.0.0.0:10901
      - --http-address=0.0.0.0:10902
    volumes: ["./bucket.yml:/etc/thanos/bucket.yml", "store-data:/var/thanos/store"]
À savoir : Le Store Gateway ne conserve que l'index léger et les en-têtes sur disque : les données sont lues à la demande dans le stockage objet. Prévoyez un volume persistant pour éviter de tout retélécharger à chaque redémarrage.

2. Compactor #

Compacter, downsampler, supprimer.

Les trois missions #

Résolutions et downsampling
Le downsampling accélère les requêtes sur de longues périodes.
  • Compaction : fusionne les petits blocs de 2 h en blocs plus gros (jusqu'à 14 jours) et déduplique les réplicas verticalement.
  • Downsampling : crée des blocs à 5 min puis 1 h (agrégats min, max, sum, count, counter).
  • Rétention : supprime les blocs plus anciens que la durée configurée, par résolution.
thanos compact \
  --data-dir=/var/thanos/compact \
  --objstore.config-file=/etc/thanos/bucket.yml \
  --http-address=0.0.0.0:10902 \
  --retention.resolution-raw=30d \
  --retention.resolution-5m=180d \
  --retention.resolution-1h=730d \
  --compact.concurrency=2 \
  --downsample.concurrency=2 \
  --delete-delay=48h \
  --wait                  # tourne en continu (sinon une passe puis arrêt)
Erreur Courante : Une seule instance de compactor doit écrire dans un même bucket. Deux compactors simultanés corrompent les blocs. Surveillez thanos_compact_halted : à 1, le compactor s'est arrêté sur une erreur critique.

3. Les outils de bucket #

Inspecter et réparer.

thanos tools bucket #

thanos tools bucket ls       --objstore.config-file=bucket.yml            # lister les blocs
thanos tools bucket inspect  --objstore.config-file=bucket.yml            # tableau : ULID, plage, résolution, séries, taille
thanos tools bucket verify   --objstore.config-file=bucket.yml            # vérifier l'intégrité
thanos tools bucket web      --objstore.config-file=bucket.yml            # interface web des blocs
thanos tools bucket downsample --objstore.config-file=bucket.yml          # forcer un downsampling
thanos tools bucket mark --id=<ULID> --marker=deletion-mark.json --details="bloc corrompu" --objstore.config-file=bucket.yml

4. Vérifier le résultat #

Que contient le bucket ?

Exemple de sortie #

Blocs dans le bucket
La colonne RES indique la résolution : 0 = brut, 5m, 1h.
# Métriques utiles
thanos_compact_group_compactions_total
thanos_compact_downsample_total
thanos_compact_todo_compactions
thanos_blocks_meta_synced{state="loaded"}

📄 Thanos Store Gateway et Compactor : historique, downsampling et rétention →

Mon suivi

  • ⏱ Durée estimée : ≈ 8 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Questions sur cette leçon

Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.

Poser une question sur cette leçon →

Articles recommandés

Thanos : étendre Prometheus (haute disponibilité, vue globale et rétention longue)

Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Quer...

Bonnes pratiques Thanos : architecture, stockage, requêtes et exploitation

Bonnes pratiques Thanos : adopter les composants progressivement, labels externes, objstore, comp...

Mimir : le chemin de lecture (query-frontend, querier, store-gateway et caches)

Comment Mimir répond à une requête PromQL : découpage et cache du query-frontend, file d'attente,...

Mimir : compactor, rétention et stockage objet

Configurer le stockage objet de Mimir (S3, GCS, Azure, MinIO), comprendre la compaction et le spl...

Architecture et déploiement de Grafana Pyroscope

Les composants de Pyroscope (distributor, ingester, querier, store-gateway, compactor), le stocka...

Déployer Thanos sur Kubernetes (kube-prometheus-stack, Helm et Operator)

Installer Thanos sur Kubernetes : sidecar via kube-prometheus-stack, secret objstore, Bitnami/kub...

Thanos, Grafana Mimir ou VictoriaMetrics : quel stockage long terme pour Prometheus ?

Comparatif détaillé de trois solutions de stockage long terme pour Prometheus : architecture, sto...

Loki : stockage, index TSDB, rétention et stockage objet

Configurer le stockage de Loki : chunks, index TSDB, schéma v13, S3/MinIO/GCS, compactor, rétenti...

Thanos Query et Query Frontend : une vue globale et dédupliquée

Configurer Thanos Query : endpoints StoreAPI, déduplication par replica label, partial response, ...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !