RousselTMLEARNING

Observabilité

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

Servir l'historique avec le Store Gateway et optimiser le stockage avec le Compactor : compaction, downsampling 5m/1h, rétention par résolution, caches et outils de bucket.

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"}

Articles liés

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

Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Query, Store Gat…

Thanos Sidecar : accoler Thanos à Prometheus et téléverser vers le stockage objet

Mettre en place Thanos Sidecar : réglages Prometheus (external labels, blocs de 2 h), configuration objstore,…

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

Configurer Thanos Query : endpoints StoreAPI, déduplication par replica label, partial response, interface we…

Pour aller plus loin