Aller au contenu principal

VictoriaMetrics

Overview

VictoriaMetrics, c'est la base de données de métriques qui pense que Prometheus c'est bien, mais que ça pourrait être plus rapide, moins gourmand, et mieux compresser. 100% compatible avec l'API et PromQL de Prometheus, mais avec des performances jusqu'à 20x supérieures et une compression 7x meilleure. Si tu as des gros volumes de métriques ou du stockage long terme, c'est parfait.

VictoriaMetrics peut servir de drop-in replacement pour Prometheus ou de remote storage. Single binary sans dépendances externes, clustering automatique, downsampling intelligent, et dashboard web intégré. Développé en Go par une équipe experte en bases de données.

VictoriaMetrics se distingue par ses performances exceptionnelles (écritures et lectures ultra-rapides), sa compression avancée (jusqu'à 7x meilleur que Prometheus), et sa simplicité de déploiement (single binary, pas de dépendances).


Informations essentielles

PropriétéValeur
Site officielhttps://victoriametrics.com/
Repositoryhttps://github.com/VictoriaMetrics/VictoriaMetrics
LicenceApache 2.0
DéveloppeurVictoriaMetrics
LangageGo
CompatibilitéAPI Prometheus, PromQL, Grafana

Fonctionnalités principales

Performances exceptionnelles

  • Ingestion jusqu'à 20x plus rapide que Prometheus
  • Requêtes jusqu'à 5x plus rapides
  • Compression jusqu'à 7x meilleure
  • Consommation mémoire réduite
  • Support de millions de séries temporelles actives

Compatibilité Prometheus totale

  • API 100% compatible avec Prometheus
  • Support PromQL complet + extensions
  • Import/export de données Prometheus
  • Drop-in replacement pour Grafana
  • Métamonitoring avec les mêmes outils

Architecture flexible

  • Single node : pour petites/moyennes installations
  • Cluster : pour haute disponibilité et scaling horizontal
  • vmagent : collecteur de métriques léger
  • vmalert : moteur d'alerting compatible Prometheus
  • vmauth : proxy d'authentification

Fonctionnalités avancées

  • Downsampling automatique configurable
  • Déduplication intelligente des métriques
  • Streaming aggregation en temps réel
  • Multi-tenancy avec isolation
  • Backup/restore incrémental

Cas d'usage

  • Remplacement Prometheus : Migration pour améliorer les performances
  • Remote storage : Stockage long terme pour Prometheus existant
  • Gros volumes : Environnements avec millions de métriques
  • Multi-tenant : Plateformes avec isolation par tenant
  • Edge computing : Déploiements légers avec vmagent

Installation

Single node (Docker)

docker run -it --rm \
-v victoriametrics-data:/victoria-metrics-data \
-p 8428:8428 \
victoriametrics/victoria-metrics:latest

Cluster (Docker Compose)

version: '3'
services:
vmstorage:
image: victoriametrics/vmstorage:cluster-latest
ports:
- "8482:8482"
volumes:
- vmstorage-data:/storage
command:
- "--storageDataPath=/storage"

vminsert:
image: victoriametrics/vminsert:cluster-latest
depends_on:
- vmstorage
ports:
- "8480:8480"
command:
- "--storageNode=vmstorage:8400"

vmselect:
image: victoriametrics/vmselect:cluster-latest
depends_on:
- vmstorage
ports:
- "8481:8481"
command:
- "--storageNode=vmstorage:8401"

Via Helm (Kubernetes)

helm repo add vm https://victoriametrics.github.io/helm-charts/
helm install victoria-metrics vm/victoria-metrics-k8s-stack \
--set prometheus.enabled=false \
--set alertmanager.enabled=true \
--set grafana.enabled=true

Utilisation basique

Configuration Prometheus pour remote write

# Dans prometheus.yml
remote_write:
- url: http://victoriametrics:8428/api/v1/write

remote_read:
- url: http://victoriametrics:8428/api/v1/read

Configuration vmagent pour collecte

global:
scrape_interval: 15s

scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']

remote_write:
- url: http://victoriametrics:8428/api/v1/write

Requêtes PromQL étendues

# Fonctions VictoriaMetrics spécifiques
# Rollup functions
increase_pure(cpu_usage[5m]) # Sans extrapolation
histogram_quantiles("0.95", latency) # Quantiles multiples

# Métriques de métriques
vm_available_memory # Mémoire disponible
vm_cache_entries # Entrées en cache

API REST

# Import de données Prometheus
curl -F 'file=@metrics.json' http://localhost:8428/api/v1/import

# Export de données
curl 'http://localhost:8428/api/v1/export' -d 'match[]={__name__!=""}'

# Métriques top consumers
curl 'http://localhost:8428/api/v1/status/top_queries'

Avantages

  • Performances supérieures : jusqu'à 20x plus rapide que Prometheus, c'est du sérieux
  • Compression exceptionnelle : jusqu'à 7x moins d'espace disque, ça fait la différence
  • Compatible à 100% : drop-in replacement pour Prometheus, migration transparente
  • Single binary : pas de dépendances, déploiement ultra-simple
  • Scaling horizontal : cluster mode pour très gros volumes, ça scale sans limite

Limitations

  • Communauté plus petite que Prometheus : mais croissante et très active
  • Moins de documentation et tutoriels disponibles : mais la doc officielle est excellente
  • Fonctionnalités avancées parfois payantes (enterprise) : mais l'open-source couvre la plupart des besoins

Alternatives

  • Prometheus : Solution de référence mais moins performante
  • InfluxDB : Time series DB avec langage de requête différent
  • TimescaleDB : Extension PostgreSQL pour time series
  • Cortex : Prometheus distribué (plus complexe)

Ressources