RousselTMLEARNING

Observabilité

Mimir : compactor, rétention et stockage objet

Configurer le stockage objet de Mimir (S3, GCS, Azure, MinIO), comprendre la compaction et le split-and-merge, régler la rétention par tenant et supprimer des séries.

1. Configurer le stockage objet #

Trois buckets distincts.

Configuration commune #

Mimir stocke trois choses dans le stockage objet : les blocs de métriques, les règles du ruler et la configuration de l'Alertmanager. Utilisez trois buckets (ou trois préfixes) différents.

common:
  storage:
    backend: s3
    s3:
      endpoint: minio:9000
      access_key_id: mimir
      secret_access_key: supersecret
      insecure: true

blocks_storage:
  s3: { bucket_name: mimir-blocks }
  tsdb: { dir: /data/tsdb }
  bucket_store: { sync_dir: /data/tsdb-sync }

ruler_storage:
  s3: { bucket_name: mimir-ruler }

alertmanager_storage:
  s3: { bucket_name: mimir-alertmanager }
Erreur Courante : Mimir refuse de démarrer si les blocs et les règles partagent le même bucket sans préfixe : leurs arborescences se mélangeraient.
À savoir : Backends disponibles : s3 (AWS et compatibles : MinIO, Ceph, Scaleway, OVH...), gcs, azure, swift et filesystem (tests uniquement).

2. La compaction #

Moins de blocs, moins de doublons, des requêtes plus rapides.

Pourquoi compacter ? #

Niveaux de compaction
Les trois copies d'une série écrites par trois ingesters sont dédupliquées par le compactor.

Chaque ingester produit un bloc toutes les 2 h ; avec 30 ingesters et un facteur de réplication de 3, cela fait des centaines de petits blocs contenant chacun des doublons. Le compactor :

  • fusionne verticalement les blocs d'une même période (et déduplique les échantillons répliqués) ;
  • fusionne horizontalement les périodes adjacentes (2 h → 12 h → 24 h) ;
  • découpe les très gros tenants en plusieurs blocs (split-and-merge), pour paralléliser ;
  • met à jour le bucket index et marque puis supprime les blocs remplacés ou expirés.

Réglages #

compactor:
  data_dir: /data/compactor
  block_ranges: [2h, 12h, 24h]
  compaction_interval: 1h
  deletion_delay: 12h            # délai avant suppression physique d'un bloc remplacé
  sharding_ring:
    kvstore: { store: memberlist }

limits:
  compactor_split_and_merge_shards: 0   # > 0 pour les très gros tenants
  compactor_split_groups: 1
Bonne Pratique : Surveillez cortex_compactor_last_successful_run_timestamp_seconds : un compactor bloqué ne provoque pas d'erreur visible tout de suite, mais les requêtes ralentissent et le stockage gonfle.

3. Rétention et suppression #

Garder ce qu'il faut, le temps qu'il faut.

Rétention #

La rétention est appliquée par le compactor, globalement ou par tenant. Par défaut elle est infinie (0).

limits:
  compactor_blocks_retention_period: 1y

# runtime.yaml : surcharges par tenant
overrides:
  team-dev:
    compactor_blocks_retention_period: 30d
  team-finance:
    compactor_blocks_retention_period: 5y
À savoir : Mimir ne fait pas de downsampling (contrairement à Thanos). Une rétention longue reste raisonnable grâce au prix du stockage objet, mais les requêtes sur plusieurs mois profitent beaucoup de règles d'enregistrement qui pré-agrègent les données.

Supprimer des séries #

Mimir ne propose pas de suppression ciblée de séries : une donnée envoyée par erreur disparaît avec la rétention. Filtrez donc en amont (write_relabel_configs) les labels sensibles. Pour supprimer un tenant entier, utilisez l'API /compactor/delete_tenant.

curl -X POST -H 'X-Scope-OrgID: team-old' http://mimir:8080/compactor/delete_tenant
curl -H 'X-Scope-OrgID: team-old' http://mimir:8080/compactor/delete_tenant_status

Articles liés

La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place

Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tempo pour les …

Pourquoi Grafana Mimir ? Architecture et modes de déploiement

Les limites de Prometheus seul, ce qu'apporte Mimir (stockage long terme, haute disponibilité, multi-tenant),…

Mimir : le chemin d'écriture (distributor, ingesters, réplication et déduplication HA)

Comment Mimir ingère les métriques : remote_write, validation et limites du distributor, hash ring, réplicati…

Pour aller plus loin

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 !