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
VictoriaMetrics en cluster : vminsert, vmselect, vmstorage et multi-tenant
L'architecture cluster de VictoriaMetrics : rôle de vminsert, vmselect et vmstorage, répartition ...
Grafana Loki : le système de logs inspiré de Prometheus
Découvrir Grafana Loki : philosophie d'indexation par labels, architecture (distributor, ingester...
Mimir : compactor, rétention et stockage objet
Configurer le stockage objet de Mimir (S3, GCS, Azure, MinIO), comprendre la compaction et le spl...
Déployer et exploiter Mimir sur Kubernetes
Installer Mimir avec le chart Helm mimir-distributed, dimensionner les composants, superviser Mim...
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...
Thanos Query et Query Frontend : une vue globale et dédupliquée
Configurer Thanos Query : endpoints StoreAPI, déduplication par replica label, partial response, ...
Envoyer ses logs, métriques et traces vers OpenObserve
Les points de réception d'OpenObserve : JSON, bulk, OTLP avec le Collector OpenTelemetry, Prometh...
Grafana Alloy et Prometheus : collecter et envoyer des métriques
Apprenez à configurer Grafana Alloy pour collecter, transformer et envoyer des métriques en utili...
VictoriaMetrics : pourquoi et comment, du nœud unique au cluster
Ce qu'apporte VictoriaMetrics par rapport à Prometheus seul, ses composants (single-node, vmagent...