RousselTMLEARNING

Observabilité

VictoriaMetrics en cluster : vminsert, vmselect, vmstorage et multi-tenant

L'architecture cluster de VictoriaMetrics : rôle de vminsert, vmselect et vmstorage, répartition et réplication des données, URL multi-tenant, dimensionnement et haute disponibilité.

1. Architecture #

Trois composants, un seul avec état.

Rôles #

Cluster VictoriaMetrics
Les vmstorage ne se parlent pas entre eux : l'architecture est volontairement simple.
ComposantÉtatRôle
vminsertSans étatReçoit les écritures et répartit les séries entre les vmstorage (hachage cohérent)
vmstorageAvec état (disque)Stocke les données ; ne connaît pas les autres vmstorage
vmselectSans état (cache)Interroge tous les vmstorage et fusionne les résultats
vmstorage -storageDataPath=/data -retentionPeriod=1y
vminsert  -storageNode=vmstorage-1:8400,vmstorage-2:8400,vmstorage-3:8400
vmselect  -storageNode=vmstorage-1:8401,vmstorage-2:8401,vmstorage-3:8401

2. Multi-tenant #

Le tenant est dans l'URL.

URL #

UsageURL
Écriturehttp://vminsert:8480/insert/<accountID>/prometheus/api/v1/write
Lecture (source Grafana)http://vmselect:8481/select/<accountID>/prometheus
Tenant et projet<accountID>:<projectID>, par exemple 42:1

Les tenants sont créés implicitement à la première écriture. Comme pour Mimir, l'authentification est déléguée à une passerelle (vmauth dans l'écosystème VictoriaMetrics) qui associe chaque utilisateur à son URL.

# vmauth : routage authentifié vers les tenants
users:
  - username: equipe-web
    password: secret-web
    url_prefix: http://vmselect:8481/select/1/prometheus
  - username: equipe-data
    password: secret-data
    url_prefix: http://vmselect:8481/select/2/prometheus

3. Réplication et disponibilité #

Survivre à la perte d'un nœud.

Réglages #

vminsert -replicationFactor=2 -storageNode=...      # chaque échantillon sur 2 vmstorage
vmselect -replicationFactor=2 -dedup.minScrapeInterval=1ms -storageNode=...
SituationComportement
Un vmstorage indisponible, sans réplicationLes écritures sont redirigées vers les autres ; les lectures renvoient des résultats partiels (signalés)
Un vmstorage indisponible, réplication 2Lectures complètes
vminsert ou vmselect indisponibleAucun impact s'il y a plusieurs instances derrière un répartiteur
Bonne Pratique : La réplication double le disque nécessaire. Pour beaucoup d'équipes, deux clusters indépendants alimentés par vmagent (deux -remoteWrite.url) offrent une meilleure résilience pour un coût comparable.

Articles liés

VictoriaMetrics : pourquoi et comment, du nœud unique au cluster

Ce qu'apporte VictoriaMetrics par rapport à Prometheus seul, ses composants (single-node, vmagent, vmalert, c…

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é, vmagent et …

MetricsQL : PromQL avec des super-pouvoirs

Les différences entre MetricsQL et PromQL : fenêtres implicites, fonctions supplémentaires (range, rollup, la…

Pour aller plus loin