RousselTMLEARNING

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

Compactor, rétention et stockage objet

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

📄 Mimir : compactor, rétention et stockage objet →

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

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,...

Architecture et déploiement de Grafana Pyroscope

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

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

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

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), configurati...

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...

Pourquoi Grafana Mimir ? Architecture et modes de déploiement

Les limites de Prometheus seul, ce qu'apporte Mimir (stockage long terme, haute disponibilité, mu...

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...

Mimir : multi-tenant, limites et configuration d'exécution

Isoler des équipes dans Mimir : tenants et en-tête X-Scope-OrgID, authentification par passerelle...

Tempo : stockage objet, blocs, compactor et déploiement distribué

Configurer le stockage de Tempo : S3/GCS/Azure, format Parquet vParquet4, WAL, compactor et réten...

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 !