1. Architecture #
Trois composants, un seul avec état.
Rôles #
| Composant | État | Rôle |
|---|---|---|
| vminsert | Sans état | Reçoit les écritures et répartit les séries entre les vmstorage (hachage cohérent) |
| vmstorage | Avec état (disque) | Stocke les données ; ne connaît pas les autres vmstorage |
| vmselect | Sans é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:84012. Multi-tenant #
Le tenant est dans l'URL.
URL #
| Usage | URL |
|---|---|
| Écriture | http://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/prometheus3. 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=...| Situation | Comportement |
|---|---|
| Un vmstorage indisponible, sans réplication | Les écritures sont redirigées vers les autres ; les lectures renvoient des résultats partiels (signalés) |
| Un vmstorage indisponible, réplication 2 | Lectures complètes |
| vminsert ou vmselect indisponible | Aucun 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.