1. Envoyer des métriques à Mimir #
Remote write, OTLP et tenant.
Configurer Prometheus #
Prometheus continue de collecter (ou passe en mode agent, sans stockage local ni requêtes) et pousse ses échantillons vers Mimir.
# prometheus.yml
global:
scrape_interval: 15s
external_labels:
cluster: prod-eu # identifie la source
__replica__: replica-a # identifie le réplica HA (retiré par Mimir)
remote_write:
- url: http://mimir:8080/api/v1/push
headers:
X-Scope-OrgID: team-platform # tenant
queue_config:
capacity: 10000
max_samples_per_send: 2000
max_shards: 50À savoir : Avecmultitenancy_enabled: false, l'en-têteX-Scope-OrgIDest inutile : toutes les données vont dans le tenantanonymous.
Avec Grafana Alloy #
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:8080/api/v1/push"
headers = { "X-Scope-OrgID" = "team-platform" }
}
}2. Distributor et ingesters #
Valider, répartir, répliquer.
Le parcours d'un échantillon #
- Le distributor vérifie le tenant, la validité des labels (nombre, longueur, noms), l'horodatage et applique les limites d'ingestion. Un dépassement renvoie
429(limite de débit) ou400(échantillon invalide). - Il hache
tenant + labelspour trouver, dans le ring, les 3 ingesters (facteur de réplication par défaut) responsables de la série. - Chaque ingester ajoute l'échantillon à sa TSDB en mémoire et l'écrit dans son WAL (write-ahead log) sur disque, pour survivre à un redémarrage.
- Toutes les 2 heures, l'ingester ferme un bloc TSDB et le téléverse dans le stockage objet. Il garde les blocs récents localement pour répondre aux requêtes (13 h par défaut).
Réplication et quorum #
Avec un facteur de réplication de 3, l'écriture est confirmée dès que 2 ingesters sur 3 ont répondu. On peut donc perdre un ingester (ou une zone entière avec la réplication par zone) sans perte de données ni erreur côté client.
ingester:
ring:
replication_factor: 3
zone_awareness_enabled: true # une copie par zone de disponibilité
instance_availability_zone: zone-aErreur Courante : Les ingesters sont avec état : déployez-les en StatefulSet avec un volume persistant pour le WAL, et redémarrez-les un par un (ou une zone à la fois). Supprimer plusieurs ingesters d'un coup peut faire perdre les données non encore téléversées.
3. Déduplication des paires Prometheus HA #
Deux réplicas, une seule série stockée.
Principe #
Pour la haute disponibilité, on lance deux Prometheus identiques. Sans précaution, Mimir stockerait chaque série deux fois. Le HA tracker du distributor élit, pour chaque couple (tenant, cluster), un réplica « leader » et rejette les échantillons de l'autre. Si le leader se tait plus de ha_tracker_failover_timeout (30 s par défaut), l'autre prend le relais.
# mimir.yaml
limits:
accept_ha_samples: true
ha_cluster_label: cluster # valeurs par défaut
ha_replica_label: __replica__
distributor:
ha_tracker:
enable_ha_tracker: true
kvstore:
store: consul
consul:
host: consul:8500Bonne Pratique : Les deux Prometheus doivent avoir la même valeur pourclusteret une valeur différente pour__replica__. Mimir retire le label de réplica avant le stockage.
La page /distributor/ha_tracker montre le réplica élu pour chaque cluster. La métrique cortex_distributor_deduped_samples_total compte les échantillons écartés.
Mon suivi
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.
Articles recommandés
Pourquoi Grafana Mimir ? Architecture et modes de déploiement
Les limites de Prometheus seul, ce qu'apporte Mimir (stockage long terme, haute disponibilité, mu...
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,...
Thanos Receive : ingérer du remote write et gérer le multi-tenant
Utiliser Thanos Receive : mode push avec remote write, hashring, réplication, multi-tenancy, conf...
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...
Ingérer des métriques dans VictoriaMetrics : scraping, vmagent et remote write
Toutes les façons d'alimenter VictoriaMetrics : remote write depuis Prometheus, scraping intégré,...
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...
Mimir : ruler, Alertmanager et mimirtool
Évaluer des règles d'enregistrement et d'alerte dans Mimir, configurer l'Alertmanager multi-tenan...
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...
Architecture et déploiement de Grafana Pyroscope
Les composants de Pyroscope (distributor, ingester, querier, store-gateway, compactor), le stocka...