RousselTMLEARNING

Observabilité

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, limites d'ingestion et de requêtes, surcharges par tenant à chaud et shuffle sharding.

1. Les tenants #

Une isolation logique complète.

Principe #

Dans Mimir, chaque requête porte l'identifiant d'un tenant dans l'en-tête X-Scope-OrgID. Les données, les règles, l'Alertmanager et les limites sont séparés par tenant : une équipe ne voit jamais les séries d'une autre.

multitenancy_enabled: true   # défaut
Erreur Courante : Mimir ne fait pas d'authentification : il fait confiance à l'en-tête. En production, placez devant lui une passerelle (nginx, Envoy, Grafana Enterprise Metrics) qui authentifie le client puis injecte le bon X-Scope-OrgID.

Exemple de passerelle nginx #

map $remote_user $tenant {
  equipe-web      web;
  equipe-data     data;
}
server {
  listen 80;
  auth_basic           "Mimir";
  auth_basic_user_file /etc/nginx/htpasswd;
  location / {
    proxy_set_header X-Scope-OrgID $tenant;
    proxy_pass http://mimir:8080;
  }
}

Requêtes multi-tenant #

Avec tenant_federation.enabled: true, une requête peut viser plusieurs tenants : X-Scope-OrgID: web|data. Le label __tenant_id__ indique alors l'origine de chaque série. Pratique pour une équipe SRE centrale.

2. Les limites #

Protéger le cluster des abus et des erreurs.

Limites d'ingestion #

LimiteDéfautSignification
ingestion_rate10 000Échantillons/s par tenant
ingestion_burst_size200 000Rafale tolérée
max_global_series_per_user150 000Séries actives par tenant (sur tout le cluster)
max_global_series_per_metric0 (illimité)Séries actives par nom de métrique
max_label_names_per_series30Nombre de labels par série
max_label_value_length2048Longueur d'une valeur de label
out_of_order_time_window0Fenêtre d'acceptation des échantillons en retard

Un dépassement se traduit par des erreurs 429 ou 400 côté Prometheus et par la métrique cortex_discarded_samples_total{reason=...} côté Mimir.

Erreur Courante : Les valeurs par défaut sont volontairement basses. Le premier « bug » rencontré en production est presque toujours per_user_series_limit : relevez les limites du tenant concerné plutôt que de désactiver le contrôle.

3. La configuration d'exécution #

Changer les limites sans redémarrer.

runtime.yaml #

# mimir.yaml
runtime_config:
  file: /etc/mimir/runtime.yaml
  period: 10s
# runtime.yaml (relu toutes les 10 s)
overrides:
  web:
    ingestion_rate: 50000
    ingestion_burst_size: 1000000
    max_global_series_per_user: 2000000
  data:
    max_global_series_per_user: 500000
    max_fetched_series_per_query: 100000
    ingestion_tenant_shard_size: 6   # shuffle sharding : 6 ingesters seulement

La page /runtime_config affiche les surcharges en vigueur ; /runtime_config?mode=diff montre ce qui diffère des valeurs par défaut.

Shuffle sharding #

Sans shuffle sharding, chaque tenant utilise tous les ingesters et tous les queriers : un tenant qui envoie une requête monstrueuse ralentit tout le monde. En attribuant à chaque tenant un sous-ensemble aléatoire d'instances (ingestion_tenant_shard_size, max_queriers_per_tenant, store_gateway_tenant_shard_size), on limite le rayon d'impact d'un tenant bruyant.

Bonne Pratique : Commencez par mesurer : cortex_ingester_active_series par tenant et la page /ingester/tenants montrent qui consomme quoi.

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 !