Aller au contenu

TechniquePratique

Pourquoi VictoriaMetrics, architecture et mode de déploiement

Pour : ingénieurs et SRE · architectesPrérequis : Bases de Prometheus (types de métriques, PromQL).

Module 1 : pourquoi VictoriaMetrics pour les charges LLM

Section intitulée « Module 1 : pourquoi VictoriaMetrics pour les charges LLM »

Les charges LLM en production produisent un profil de métriques atypique, qui pousse les backends de supervision classiques dans leurs retranchements.

Caractéristique LLMImpact sur le backend de métriques
Forte cardinalitémodèle x fournisseur x tenant x pipeline donne vite des milliers de séries temporelles et chaque intervalle d’histogramme multiplie ce nombre.
Histogrammes de tokensDistributions très larges (de 10 à 100 000 tokens par requête), avec des intervalles (buckets) très étalés.
Métriques de coût en USDMétriques financières qui exigent une précision en virgule flottante et des agrégations par période comptable.
Rétention longueAudits de coûts et SLA contractuels : une rétention d’un à trois ans peut être exigée.
Pics d’ingestionUn lot de complétions peut multiplier le débit d’écriture normal en quelques secondes ; l’ampleur du pic dépend de la taille du lot et de l’intervalle de collecte.
Métriques de qualité RAGFlottants, distributions, scores : beaucoup d’écritures, lectures fréquentes pour l’alerte.

1.2 VictoriaMetrics face à Prometheus, Thanos et Mimir

Section intitulée « 1.2 VictoriaMetrics face à Prometheus, Thanos et Mimir »

Prometheus seul stocke ses données sur le disque local d’une instance. Pour une rétention longue, la haute disponibilité ou le multi-tenant, on lui adjoint en général un stockage distant : Thanos, Grafana Mimir (dérivé de Cortex) ou VictoriaMetrics. La comparaison utile oppose donc ces options entre elles, sur des critères vérifiables.

CritèrePrometheus seulPrometheus + ThanosGrafana MimirVictoriaMetrics
DéploiementBinaire uniquePrometheus plus plusieurs composants Thanos (sidecar ou receive, querier, store gateway, compacteur)Microservices, ou mode monolithique en un seul binaireBinaire unique (Single), ou trois composants (vminsert, vmselect, vmstorage) en Cluster
Stockage et rétention longueDisque local, non répliqué (rétention par défaut : 15 jours)Stockage objet (S3, GCS, Azure…) ; sous-échantillonnage par le compacteurStockage objetDisque local ou bloc, rétention par instance (-retentionPeriod) ; sauvegardes vers un stockage objet avec vmbackup ; sous-échantillonnage réservé à l’édition Enterprise
Haute disponibilitéDeux instances identiques, sans dédoublonnage natifDédoublonnage au moment de la requêteRéplication à l’ingestionDeux instances alimentées par vmagent (Single) ; facteur de réplication en Cluster
Multi-tenantNonOui, avec ReceiveNatifNatif en Cluster (accountID)
Langage de requêtePromQLPromQLPromQLMetricsQL, largement compatible avec PromQL, avec des extensions (median_over_time, rollup_candlestick, outliers_mad…)
Réception OTLPRécepteur OTLP (expérimental depuis 2.47, intégré à Prometheus 3.x)Via Prometheus ou un CollectorPoint OTLP natifPoint OTLP sur le port HTTP : /opentelemetry/v1/metrics sur le port 8428 (Single), /insert/<accountID>/opentelemetry/v1/metrics sur vminsert (Cluster)
LicenceApache 2.0Apache 2.0AGPL 3.0Apache 2.0 (Single et Cluster) ; édition Enterprise sous licence commerciale (filtres de rétention, sous-échantillonnage, vmanomaly, mTLS de vmauth…)
CompatibilitéRéférenceAPI de requête PrometheusAPI de requête et d’écriture PrometheusAPI de requête et d’écriture Prometheus : la plupart des tableaux de bord existants fonctionnent sans modification

Les offres hébergées (Grafana Cloud, Amazon Managed Service for Prometheus, Google Cloud Managed Service for Prometheus, l’offre cloud de VictoriaMetrics, entre autres) reprennent ces moteurs ou des API compatibles ; elles déplacent la question vers le coût par série et la localisation des données.

Ce que disent les chiffres publiés. La documentation de Prometheus indique un stockage moyen de 1 à 2 octets par échantillon (prometheus.io, Storage, consulté le 2 octobre 2026). Selon l’éditeur, VictoriaMetrics consomme « jusqu’à 7 fois moins de RAM » que Prometheus, Thanos ou Cortex en forte cardinalité (des millions de séries uniques) et demande « jusqu’à 7 fois moins d’espace disque » que ces mêmes outils (documentation VictoriaMetrics, consultée le 2 octobre 2026). Ces deux chiffres viennent d’un banc d’essai publié par l’éditeur lui-même, qui comparait Prometheus 2.22.2 et VictoriaMetrics 1.47.0 sur des métriques node_exporter (article de l’éditeur). Ce sont des maxima obtenus sur une charge précise, avec des versions anciennes : mesurez sur votre propre charge, avec les versions que vous comptez exploiter, avant tout dimensionnement.

Module 2 : architecture complète VM + OTel pour les LLM

Section intitulée « Module 2 : architecture complète VM + OTel pour les LLM »

L’architecture couvre tout le chemin des métriques, des sources LLM jusqu’aux tableaux de bord et aux alertes. Elle peut être déployée dans un environnement totalement isolé. En résumé, elle enchaîne les étapes suivantes :

ÉtapeComposantsCe qui se passe
SourcesApplication LLM (SDK OTel), vLLM, Ollama, LiteLLM, DCGM exporterÉmettent métriques et traces, ou exposent un point /metrics
CollecteOTel Collector, vmagentReçoivent OTLP, collectent les points Prometheus, enrichissent, dérivent des métriques à partir des traces
StockageVictoriaMetrics (Single ou Cluster)Stocke les séries, sert MetricsQL, héberge vmui
Règlesvmalert, éventuellement vmanomalyÉvalue les règles d’alerte et d’enregistrement, réécrit les résultats
ConsommationGrafana, AlertmanagerTableaux de bord, routage des alertes

Points clés de l’architecture :

  • Les sources instrumentées émettent vers l’OTel Collector en OTLP (gRPC sur le port 4317 ou HTTP sur le port 4318).
  • Le Collector filtre, enrichit (labels Kubernetes), dérive des métriques à partir des traces (connecteur spanmetrics) et exporte.
  • VictoriaMetrics reçoit les données par remote write Prometheus. Il accepte aussi OTLP directement sur HTTP, en mode Single comme en mode Cluster.
  • vmalert évalue les règles MetricsQL et envoie les alertes à Alertmanager.
  • Grafana utilise VictoriaMetrics comme source de données (plugin VictoriaMetrics ou source Prometheus standard).
  • vmanomaly (Enterprise) ajoute la détection d’anomalies sur les métriques LLM.
ComposantPort(s)Rôle pour l’observabilité LLM
OTel Collector4317 (gRPC), 4318 (HTTP)Normalise et route toutes les métriques. Le connecteur spanmetrics dérive des métriques des traces RAG.
VictoriaMetrics Single8428Stockage TSDB, API MetricsQL, remote write, OTLP direct, vmui intégré
vmagent8429Collecte de type Prometheus. Adapté au DCGM exporter, au /metrics de vLLM, à LiteLLM
vmalert8880Évalue les règles MetricsQL d’alerte et d’enregistrement, dialogue avec Alertmanager
Alertmanager9093Routage des alertes (Slack, PagerDuty, e-mail, webhook), déduplication et mise en sourdine
Grafana3000Tableaux de bord, avec le plugin VictoriaMetrics ou la source Prometheus standard
vmanomaly (Enterprise)voir sa documentationDétection d’anomalies sur les métriques LLM par modèles statistiques et d’apprentissage. Facultatif.

Module 3 : Single ou Cluster, choisir son mode de déploiement

Section intitulée « Module 3 : Single ou Cluster, choisir son mode de déploiement »

Le mode Single est un binaire unique qui ingère, stocke et interroge. Le mode Cluster répartit ces rôles entre trois composants : vminsert (ingestion), vmstorage (stockage) et vmselect (requêtes), chacun pouvant être dimensionné et répliqué indépendamment.

La documentation de l’éditeur recommande la version Single pour une ingestion inférieure à environ un million de points par seconde et invite à « réfléchir à deux fois » avant de choisir la version Cluster, plus complexe à configurer et à exploiter (documentation du mode Cluster, consultée le 2 octobre 2026). Les charges LLM décrites dans ce guide restent en général très en deçà de ce débit : le choix du Cluster tient alors surtout à la haute disponibilité et au multi-tenant.

CritèreMode SingleMode Cluster
Débit d’ingestionRecommandé sous environ un million de points par seconde (documentation de l’éditeur)Au-delà, ou quand une seule machine ne suffit plus
Haute disponibilitéNon native (deux instances alimentées par vmagent, ou solutions externes)Native : réplicas par composant, facteur de réplication
Multi-tenantNon natif (instances séparées ou vmauth)Natif (accountID dans les chemins d’API)
Déploiement1 conteneur, 1 binaireTrois types de composants à déployer
RétentionUne rétention globale par instanceUne rétention globale par vmstorage ; la rétention par tenant ou par série exige la version Enterprise (-retentionFilter)
Complexité d’exploitationFaiblePlus élevée : plusieurs composants à dimensionner et à superviser
LicenceOpen source (Apache 2.0)Open source (Apache 2.0)

Envisagez le Cluster quand l’ingestion approche le million de points par seconde, quand les ressources d’une seule machine ne suffisent plus malgré un dimensionnement vertical, ou quand un SLA de haute disponibilité ou un isolement multi-tenant natif est exigé. Les requêtes, l’API compatible Prometheus et les tableaux de bord Grafana restent identiques.