Files
2026-06-09 18:40:21 +02:00

7.7 KiB
Raw Permalink Blame History


title: VictoriaMetrics created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, time-series, metrics, prometheus, performance, go, production] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/VictoriaMetrics/VictoriaMetrics]

📊 VictoriaMetrics

La base de données time-series ultra-performante : drop-in replacement de Prometheus, 10-100× plus rapide à l'ingestion, jusqu'à 70× moins de RAM. Le choix du production à grande échelle.

📋 Informations Générales

Champ Valeur
Site web victoriametrics.com
GitHub VictoriaMetrics/VictoriaMetrics
License Apache-2.0
Langage Go
Étoiles GitHub 17.1k
Dernière MAJ 2026-06-07
Catégorie [[cat-monitoring

📝 Description

VictoriaMetrics est une base de données time-series (TSDB) conçue comme un drop-in replacement de Prometheus, avec des performances nettement supérieures en termes de :

  • Vitesse d'ingestion : jusqu'à 20× plus rapide que Prometheus
  • Consommation RAM : 10-70× moins de RAM
  • Compression disque : 5-10× moins d'espace disque
  • Scalabilité : conçue pour gérer des milliards de séries actives

C'est le choix naturel quand Prometheus atteint ses limites (typiquement au-delà de 5-10 millions de séries actives ou quand l'ingestion sature).

Composants de l'écosystème :

  • vmstorage : le moteur de stockage TSDB
  • vminsert : réception des métriques (Prometheus remote write, InfluxDB, OpenTSDB, CSV, JSON)
  • vmselect : exécution des requêtes (PromQL, MetricsQL)
  • vmagent : scraper (remplace prometheus dans le scraping)
  • vmauth : proxy d'authentification
  • vmalert : alerting (compatible avec alertmanager)
  • vmgateway : API gateway multi-tenant
  • vmui : interface web native pour requêter
  • Cluster mode : sharding et réplication pour scale horizontale
  • Drop-in Prometheus : imite les APIs de Prometheus (/api/v1/query, etc.)
  • MetricsQL : extension de PromQL avec des fonctions supplémentaires

Public cible : DevOps, SRE, plateforme, équipes qui font du monitoring à grande échelle. Pour un homelab avec quelques serveurs, app-prometheus standard suffit largement.

Comparaison : VictoriaMetrics est à app-prometheus ce que PostgreSQL avec extensions est à SQLite : la même philosophie, mais conçue pour le production à grande échelle. C'est aussi un concurrent direct de InfluxDB, TimescaleDB, M3DB et Thanos (qui est un autre moyen de scaler Prometheus).

🚀 Installation

Option 1 : Docker Compose (single-node, recommandé pour démarrer)

# docker-compose.yml
version: '3.8'
services:
  victoriametrics:
    image: victoriametrics/victoria-metrics:latest
    container_name: victoriametrics
    restart: unless-stopped
    ports:
      - "8428:8428"  # API + UI
    volumes:
      - vm-data:/storage
    command:
      - "--storageDataPath=/storage"
      - "--httpListenAddr=:8428"
      - "--retentionPeriod=12"  # 12 mois
      - "--memory.allowedPercent=60"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vm.rule=Host(`vm.example.com`)"
      - "traefik.http.routers.vm.entrypoints=websecure"
      - "traefik.http.routers.vm.tls.certresolver=letsencrypt"

  vmagent:
    image: victoriametrics/vmagent:latest
    container_name: vmagent
    restart: unless-stopped
    depends_on:
      - victoriametrics
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - "--promscrape.config=/etc/prometheus/prometheus.yml"
      - "--remoteWrite.url=http://victoriametrics:8428/api/v1/write"

volumes:
  vm-data:

Exemple de prometheus.yml pour vmagent :

scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['node-exporter:9100']
  - job_name: cadvisor
    static_configs:
      - targets: ['cadvisor:8080']

Option 2 : Binaire unique (bare-metal)

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.106.0/victoria-metrics-linux-amd64-v1.106.0.tar.gz
tar -xzf victoria-metrics-linux-amd64-v1.106.0.tar.gz
./victoria-metrics-prod -storageDataPath=/vm-data

Option 3 : Cluster mode (production à grande échelle)

Voir la doc officielle cluster.

⚙️ Configuration Initiale

  1. Accéder à l'UI : http://IP:8428/vmui/ (interface web native)
  2. Tester une requête : http://IP:8428/api/v1/query?query=up
  3. Brancher vmagent : configurer le scrape config et le remote write vers vmstorage
  4. Importer les dashboards Grafana : Grafana supporte nativement VictoriaMetrics comme datasource
  5. Configurer les alertes : déployer vmalert et connecter à alertmanager
  6. Backup : vmbackup (incrémental) ou vmstorage en mode cluster avec réplication

🔄 Alternatives

Open Source

  • app-prometheus — La référence, en Go, simple et éprouvé
  • Thanos — Pour scaler Prometheus (extension)
  • Cortex — TSDB multi-tenant (très complexe)
  • M3DB — TSDB distribuée par Uber
  • InfluxDB — TSDB généraliste, écrit en Go
  • TimescaleDB — Extension PostgreSQL pour time-series
  • QuestDB — TSDB en Java, ultra-rapide

Comparaison VictoriaMetrics vs alternatives

Critère VictoriaMetrics Prometheus Thanos InfluxDB
RAM (10M séries) ~2 Go ~20 Go ~30 Go ~10 Go
Ingestion rate 1M+ samples/s 100k samples/s 100k+ 500k+
Stockage 0.4 bytes/sample 2-3 bytes/sample 2-3 bytes/sample 1 byte/sample
PromQL (MetricsQL) (Flux)
Drop-in Prometheus N/A
Cluster natif (Enterprise)
Complexité Moyenne Basse Élevée Moyenne

Verdict : VictoriaMetrics est le choix pragmatique quand Prometheus montre ses limites. Plus simple que Thanos, plus rapide qu'InfluxDB, plus scalable que Prometheus seul.

Propriétaires (ce que VictoriaMetrics remplace)

  • Datadog Metrics (très cher)
  • New Relic Metrics (payant)
  • InfluxDB Cloud (payant au-delà du free tier)
  • AWS Timestream (payant AWS)
  • Azure Data Explorer (payant Azure)
  • Splunk Infrastructure Monitoring (très cher)

🔐 Sécurité

  • Auth basique : --httpAuth.username et --httpAuth.password
  • TLS : via reverse proxy (app-traefik) ou mTLS natif (Enterprise)
  • Multi-tenant : via vmauth (headers, JWT, mTLS)
  • HTTPS via app-traefik obligatoire
  • Firewall : l'API write (8429) ne doit jamais être exposée publiquement
  • Backups : chiffrer les sauvegardes (elles contiennent toutes vos métriques)

📚 Ressources

Pages Liées