RousselTMLEARNING

Observabilité

Déployer et exploiter Mimir sur Kubernetes

Installer Mimir avec le chart Helm mimir-distributed, dimensionner les composants, superviser Mimir avec le mixin officiel et diagnostiquer les erreurs les plus fréquentes.

1. Le chart Helm mimir-distributed #

Un déploiement microservices clé en main.

Installation #

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
kubectl create namespace mimir
helm install mimir grafana/mimir-distributed -n mimir -f values.yaml
# values.yaml (extrait)
mimir:
  structuredConfig:
    common:
      storage:
        backend: s3
        s3:
          endpoint: s3.eu-west-3.amazonaws.com
          region: eu-west-3
    blocks_storage:
      s3: { bucket_name: acme-mimir-blocks }
    ruler_storage:
      s3: { bucket_name: acme-mimir-ruler }
    alertmanager_storage:
      s3: { bucket_name: acme-mimir-alertmanager }
    limits:
      max_global_series_per_user: 3000000
      compactor_blocks_retention_period: 400d

minio:
  enabled: false        # MinIO intégré : pour les tests seulement

ingester:
  replicas: 3
  zoneAwareReplication: { enabled: true }
  persistentVolume: { size: 50Gi }
store_gateway:
  zoneAwareReplication: { enabled: true }
querier:
  replicas: 3
À savoir : Le chart fournit aussi un gateway nginx unique (écriture et lecture) : c'est l'URL à donner à Prometheus, Alloy et Grafana.
Bonne Pratique : Le dépôt du chart contient des fichiers small.yaml et large.yaml dimensionnés pour environ 1 million et 10 millions de séries actives : partez de l'un d'eux.

Ordres de grandeur #

ComposantDimensionné selon
distributorÉchantillons/s reçus (CPU)
ingesterSéries actives × facteur de réplication (mémoire, ~2,5 Ko/série en ordre de grandeur)
querierNombre et complexité des requêtes (CPU, mémoire)
store-gatewayNombre de blocs et taille des index (disque, mémoire)
compactorVolume ingéré par jour (disque temporaire)

2. Superviser Mimir #

Mimir surveille Mimir.

Le mixin officiel #

Le mimir-mixin fournit des dashboards Grafana (Writes, Reads, Queries, Compactor, Tenants, Overrides...), des règles d'enregistrement et des alertes avec runbooks. Le chart Helm peut les installer (metaMonitoring).

DashboardCe qu'on y lit
Mimir / WritesDébit, latence et erreurs par composant du chemin d'écriture
Mimir / ReadsLatence des requêtes, taux de cache, store-gateways
Mimir / TenantsSéries actives et échantillons rejetés par tenant
Mimir / CompactorDernière exécution, blocs en attente

3. Dépanner #

Les erreurs que tout le monde rencontre.

Diagnostic rapide #

SymptômeCause probableAction
429 ... per_user_series_limitLimite de séries du tenant atteinteRelever max_global_series_per_user ou réduire la cardinalité
400 ... out of order sampleÉchantillons en retard ou deux sources sans __replica__Vérifier les labels HA, ouvrir out_of_order_time_window
at least 2 live replicas requiredTrop d'ingesters indisponiblesVérifier /ingester/ring, oublier les instances mortes (« Forget »)
Trous dans les graphes après 12 hStore-gateway ne voit pas les blocsVérifier le compactor et le bucket index
Requêtes lentesCaches absents ou trop petitsDéployer memcached, vérifier max_query_parallelism
# Pages d'état utiles
curl -s http://mimir:8080/ready
curl -s http://mimir:8080/ingester/ring | head
curl -s http://mimir:8080/config | grep -A3 limits
kubectl -n mimir logs deploy/mimir-distributor | grep -i discarded

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