RousselTMLEARNING

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

Pourquoi Grafana Mimir ?

1. Les limites de Prometheus seul #

Pourquoi un stockage de métriques distribué.

Un serveur, un disque #

Disponible dans : ✓ OSS ✓ Enterprise ✓ Cloud Mimir open source, Enterprise Metrics et Grafana Cloud Metrics

Prometheus est excellent pour collecter et alerter, mais il a été conçu comme un serveur autonome : ses données vivent sur son disque local, sa capacité est bornée par une seule machine et chaque instance ne voit que ce qu'elle collecte.

BesoinPrometheus seulAvec Mimir
Rétention de plusieurs annéesDisque local coûteux, pas de downsamplingStockage objet bon marché, rétention par tenant
Haute disponibilitéDeux réplicas aux données légèrement différentesDéduplication HA à l'ingestion, réplication ×3
Vue globaleUne instance = un périmètreToutes les sources dans une seule API PromQL
Plusieurs équipesUne instance par équipeMulti-tenant natif avec limites par tenant
Centaines de millions de sériesImpossible sur un nœudScalabilité horizontale de chaque composant

Mimir en une phrase #

Grafana Mimir est une base de données de séries temporelles distribuée, compatible Prometheus : elle reçoit les métriques par remote_write (ou OTLP), les stocke en blocs TSDB dans un stockage objet et les sert via l'API HTTP de Prometheus. Grafana l'interroge comme une source de données Prometheus classique.

À savoir : Mimir est né en 2022 d'un fork de Cortex par Grafana Labs, sous licence AGPLv3. Il en reprend l'architecture (hash ring, ingesters, store-gateway) avec de nombreuses optimisations : compacteur partitionné, moteur de requêtes plus rapide, chemin d'ingestion découplé par Kafka dans les versions récentes.

2. Les composants #

Chaque composant a un rôle unique et se met à l'échelle séparément.

Vue d'ensemble #

Architecture de Grafana Mimir
Les ingesters gardent les 2 dernières heures en mémoire puis téléversent des blocs ; les anciennes données sont lues par le store-gateway.
ComposantCheminRôle
distributorécritureValide les échantillons, applique les limites, déduplique les paires HA et répartit les séries vers les ingesters
ingesterécriture / lectureGarde les données récentes en mémoire (WAL sur disque), produit des blocs de 2 h et les téléverse
query-frontendlectureDécoupe les requêtes longues, met en cache les résultats, met en file d'attente
query-schedulerlectureFile d'attente partagée entre query-frontends et queriers (facultatif)
querierlectureÉvalue PromQL en interrogeant ingesters (récent) et store-gateways (historique)
store-gatewaylectureExpose les blocs du stockage objet, avec index-headers et caches
compactorfondFusionne et déduplique les blocs, applique la rétention, maintient le bucket index
rulerfondÉvalue les règles d'enregistrement et d'alerte par tenant
alertmanagerfondAlertmanager multi-tenant, configuré par API

Le hash ring #

Les composants qui partagent une charge (distributors, ingesters, store-gateways, compactors, rulers) se coordonnent via un hash ring. Chaque instance y possède des jetons ; le hachage d'une série (tenant + labels) désigne les ingesters responsables. Le ring est stocké dans memberlist (gossip, par défaut), Consul ou etcd.

Bonne Pratique : Gardez memberlist : il ne demande aucune dépendance externe. Ouvrez simplement le port de gossip (7946 par défaut) entre les pods Mimir.

3. Modes de déploiement #

Un seul binaire, plusieurs façons de le lancer.

Monolithique ou microservices #

Tous les composants sont dans le même binaire. Le paramètre -target choisit ce que lance un processus.

ModeLancementPour qui
Monolithique-target=all (défaut)Tests, petites installations, TP ; on peut lancer plusieurs réplicas identiques
Microservices-target=distributor, -target=ingester...Production : chaque composant se met à l'échelle selon sa charge (chart Helm mimir-distributed)
# Monolithique : tous les composants dans un processus
mimir -config.file=/etc/mimir.yaml -target=all

# Un seul composant
mimir -config.file=/etc/mimir.yaml -target=ingester
À savoir : Les versions récentes de Mimir proposent l'architecture « ingest storage » : les distributors écrivent dans Kafka (ou un équivalent compatible) et les ingesters consomment ce journal. Lecture et écriture sont ainsi découplées : une rafale de requêtes ne ralentit plus l'ingestion. Le principe du stockage en blocs reste identique, c'est celui que décrit cette formation.

Les ports et points d'entrée à connaître #

Point d'entréeUsage
/api/v1/pushRéception remote_write Prometheus
/otlp/v1/metricsRéception OTLP (OpenTelemetry)
/prometheus/api/v1/queryAPI de requête compatible Prometheus (URL de la datasource Grafana : http://mimir:8080/prometheus)
/prometheus/config/v1/rulesAPI du ruler
/alertmanagerInterface et API de l'Alertmanager
/ready, /metrics, /configSanté, métriques internes, configuration effective
/ingester/ring, /distributor/ha_trackerPages d'état du ring et du suivi HA

📄 Pourquoi Grafana Mimir ? Architecture et modes de déploiement →

Mon suivi

  • ⏱ Durée estimée : ≈ 6 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

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

Bonnes pratiques Grafana Mimir : architecture, limites, coûts et exploitation

Check-list de production pour Grafana Mimir : architecture, réplication par zone, limites par ten...

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

Architecture et déploiement de Grafana Pyroscope

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

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

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

Mimir : ruler, Alertmanager et mimirtool

Évaluer des règles d'enregistrement et d'alerte dans Mimir, configurer l'Alertmanager multi-tenan...

Référence des Composants Grafana Alloy

Un guide de référence complet sur tous les composants disponibles dans Grafana Alloy, organisé pa...

Mimir : compactor, rétention et stockage objet

Configurer le stockage objet de Mimir (S3, GCS, Azure, MinIO), comprendre la compaction et le spl...

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 !