Guide de déploiement

VictoriaMetrics sur VPS : stocker ses métriques Prometheus

Déployer sur un VPS Cloud →

Tutoriel

VictoriaMetrics sur VPS : stocker ses métriques Prometheus

Self-hosting7 min de lecture4 étapes

Prometheus est excellent pour collecter des métriques, beaucoup moins pour les garder. Par défaut il conserve quinze jours d'historique, et l'allonger fait grossir le disque et la mémoire de la machine qui surveille. VictoriaMetrics est une base de séries temporelles open source (licence Apache-2.0) qui prend le relais : elle reçoit les métriques par `remote_write`, les compresse et les conserve des mois, en répondant à la même API de requête que Prometheus. Ce guide l'installe en un conteneur Docker sur un VPS, la protège par un mot de passe, la place derrière un reverse proxy HTTPS et y branche Prometheus et Grafana.

Sommaire· Pourquoi un stockage dédié pour vos métriques1/13
  1. 01Pourquoi un stockage dédié pour vos métriques
  2. 02Ce que VictoriaMetrics apporte
  3. 03VictoriaMetrics face au stockage local de Prometheus
  4. 04Prérequis
  5. 05Installer VictoriaMetrics avec Docker Compose
  6. 06Sans mot de passe, la base est ouverte en écriture
  7. 07Envoyer les métriques de Prometheus
  8. 08Interroger VictoriaMetrics depuis Grafana
  9. 09Rétention, disque et sauvegarde
  10. 10Envoyer des métriques sans Prometheus
  11. 11Maîtriser la cardinalité
  12. 12Mettre à jour VictoriaMetrics
  13. 13Installation en un clic depuis le Marketplace ServOrbit

Pourquoi un stockage dédié pour vos métriques

Un Prometheus seul mélange deux métiers : collecter les métriques de vos services toutes les quinze secondes, et les stocker. Le premier est léger ; le second grossit avec chaque série et chaque jour d'historique. On finit par réduire la rétention à quelques semaines, et la question « la latence était-elle déjà aussi haute le trimestre dernier ? » reste sans réponse.

VictoriaMetrics sépare les deux. Prometheus — ou Grafana Alloy, vmagent, Telegraf — continue de collecter, puis envoie chaque point vers VictoriaMetrics, qui le compresse et le conserve. Comme elle répond à l'API de requête Prometheus, Grafana l'interroge sans changer un seul tableau de bord.

Ce que VictoriaMetrics apporte

  • Compatible Prometheus — cible remote_write, API de requête Prometheus, source de données Grafana sans plugin.
  • PromQL et MetricsQL — vos requêtes PromQL fonctionnent telles quelles ; MetricsQL ajoute des fonctions plus pratiques.
  • Stockage compact — forte compression des séries, plusieurs mois de rétention sur un disque modeste.
  • Multi-protocoles — InfluxDB line protocol, Graphite, OpenTSDB, OpenTelemetry, import CSV et JSON.
  • Interface vmui — exploration des séries, graphiques, analyse de cardinalité et requêtes les plus lentes.
  • Un seul binaire — un conteneur, aucune dépendance externe, quelques dizaines de mégaoctets de RAM au repos.

VictoriaMetrics face au stockage local de Prometheus

Faites défiler le tableau

VictoriaMetricsPrometheus seul
Rétention typiquePlusieurs mois à plusieurs annéesQuinze jours par défaut
Centraliser plusieurs serveursOui, par remote_writeNon, une instance par périmètre
Langage de requêtePromQL et MetricsQLPromQL
Formats d'ingestionPrometheus, InfluxDB, Graphite, OpenTSDB, OTLPCollecte Prometheus
GrafanaSource de données PrometheusSource de données Prometheus
Collecte des ciblesPossible, mais on la laisse à Prometheus ou vmagentOui, c'est son rôle

Prérequis

Un VPS Ubuntu 24.04 avec 1 Go de RAM suffit pour démarrer ; prévoyez 2 Go et davantage de disque si vous centralisez de nombreux serveurs. Il vous faut Docker avec le plugin Compose, et un nom de domaine pointant vers le VPS, avec nginx et un certificat HTTPS : vos serveurs y enverront leurs métriques et Grafana l'interrogera, l'adresse doit donc être stable et chiffrée.

Idéalement, installez VictoriaMetrics sur une machine distincte des serveurs qu'elle surveille : si elle tombe avec eux, vous perdez justement les données qui expliquent la panne.

Installer VictoriaMetrics avec Docker Compose

  1. Préparer le répertoire et le mot de passe

    Créez le répertoire de l'application et un fichier .env qui porte le mot de passe de l'utilisateur admin.

    mkdir -p /opt/victoriametrics && cd /opt/victoriametrics
    echo "ADMIN_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. Écrire le docker-compose.yml

    Le port n'est publié que sur la boucle locale : seul nginx y accède. Les deux options -httpAuth protègent tous les points d'accès — interface, requêtes et ingestion. -retentionPeriod=12 garde douze mois de données.

    services:
      victoriametrics:
        image: victoriametrics/victoria-metrics:v1.155.0
        restart: unless-stopped
        ports:
          - "127.0.0.1:8428:8428"
        command:
          - -storageDataPath=/storage
          - -retentionPeriod=12
          - -httpAuth.username=admin
          - -httpAuth.password=${ADMIN_PASSWORD}
          - -selfScrapeInterval=30s
        volumes:
          - victoriametrics-data:/storage
    
    volumes:
      victoriametrics-data: {}
  3. Démarrer le conteneur

    Le démarrage prend moins d'une seconde. Le journal doit afficher « started VictoriaMetrics » puis le démarrage de la collecte de ses propres métriques.

    docker compose up -d
    docker compose logs --tail 20
  4. Publier en HTTPS avec nginx

    Dans le vhost de votre domaine (certificat obtenu par certbot), proxifiez vers le port local. Relevez client_max_body_size : les lots remote_write dépassent vite la limite par défaut.

    location / {
        proxy_pass http://127.0.0.1:8428;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 64m;
    }

Sans mot de passe, la base est ouverte en écriture

Sans les options -httpAuth, quiconque connaît l'adresse peut lire toutes vos métriques et en écrire de fausses, voire supprimer des séries par l'API d'administration. Gardez l'authentification active, et ne publiez jamais le port 8428 directement sur l'IP publique : passez toujours par le reverse proxy HTTPS.

Envoyer les métriques de Prometheus

Sur chaque serveur qui fait tourner Prometheus, ajoutez un bloc remote_write à prometheus.yml, puis rechargez Prometheus. Il continue de collecter comme avant et duplique chaque point vers VictoriaMetrics.

remote_write:
  - url: https://metrics.example.com/api/v1/write
    basic_auth:
      username: admin
      password: "<ADMIN_PASSWORD>"

Vérifiez ensuite que les données arrivent : la série up de vos cibles doit répondre. Les points récents apparaissent après une trentaine de secondes, délai normal que VictoriaMetrics applique aux requêtes instantanées.

curl -u admin:<ADMIN_PASSWORD> \
  'https://metrics.example.com/api/v1/query?query=up'

Interroger VictoriaMetrics depuis Grafana

Dans Grafana, ajoutez une source de données de type Prometheus avec l'URL https://metrics.example.com, cochez Basic auth et saisissez l'utilisateur admin et le mot de passe. Vos tableaux de bord existants — Node Exporter Full par exemple — fonctionnent sans modification, sur toute la profondeur d'historique conservée.

Pour explorer sans Grafana, ouvrez https://metrics.example.com/vmui : l'interface intégrée trace les requêtes, liste les séries et montre, dans l'onglet de cardinalité, quelles métriques coûtent le plus cher en stockage.

Rétention, disque et sauvegarde

La rétention se règle avec -retentionPeriod : un nombre seul compte des mois, et les suffixes d, w ou y comptent des jours, des semaines ou des années. La place occupée dépend surtout du nombre de séries actives et de la fréquence de collecte : mesurez-la après une semaine (du -sh sur le volume) plutôt que de l'estimer. Pour sauvegarder, l'outil officiel vmbackup prend des instantanés cohérents sans arrêter la base ; à défaut, arrêtez le conteneur avant de copier le volume.

Envoyer des métriques sans Prometheus

Prometheus n'est pas un passage obligé. VictoriaMetrics accepte directement le format texte de Prometheus, le line protocol d'InfluxDB, Graphite, OpenTSDB et OpenTelemetry. Une application peut donc pousser ses propres compteurs par un simple appel HTTP — utile pour une métrique métier, un script de sauvegarde ou une tâche planifiée qui ne tourne pas assez longtemps pour être collectée.

curl -u admin:<ADMIN_PASSWORD> \
  -d 'orders_total{shop="casa"} 1284' \
  https://metrics.example.com/api/v1/import/prometheus

Si vous utilisez déjà Telegraf, pointez sa sortie InfluxDB vers https://metrics.example.com avec les mêmes identifiants : VictoriaMetrics se présente comme une base InfluxDB en écriture. Pour collecter des cibles sans installer Prometheus sur chaque machine, l'agent léger vmagent lit le même scrape_configs que Prometheus et envoie tout par remote_write ; il garde les points en tampon sur disque si VictoriaMetrics est momentanément injoignable.

Maîtriser la cardinalité

Le coût d'une base de séries temporelles ne dépend pas du nombre de points, mais du nombre de séries : chaque combinaison unique de nom de métrique et d'étiquettes en crée une. Une étiquette qui porte un identifiant d'utilisateur, une adresse IP ou une URL complète multiplie les séries par milliers, et c'est elle qui remplit la mémoire et le disque — avec VictoriaMetrics comme avec Prometheus.

L'onglet Cardinality de vmui liste les métriques et les étiquettes qui produisent le plus de séries. Consultez-le après avoir branché un nouveau service : une étiquette aux valeurs sans borne se corrige à la source, dans l'application ou par une règle metric_relabel_configs côté Prometheus, avant qu'elle n'ait rempli des mois de stockage.

Mettre à jour VictoriaMetrics

Le projet publie une nouvelle version plusieurs fois par mois, avec des notes de version détaillées. Le format de stockage reste compatible d'une version à l'autre : mettre à jour revient à changer le numéro de l'image dans docker-compose.yml, puis à relancer le conteneur. Le volume de données est conservé, et la courte coupure pendant le redémarrage est absorbée par le tampon de Prometheus ou de vmagent, qui renvoie les points en attente.

cd /opt/victoriametrics
docker compose pull
docker compose up -d

Installation en un clic depuis le Marketplace ServOrbit

Le Marketplace ServOrbit installe VictoriaMetrics sur votre VPS sans ligne de commande : il déploie le conteneur officiel, génère le mot de passe de l'utilisateur admin, active l'authentification sur tous les points d'accès et publie l'interface en HTTPS sur un sous-domaine de votre domaine ou sur le sous-domaine gratuit du VPS. Le mot de passe s'affiche dans votre espace client ; il ne reste qu'à ajouter le bloc remote_write à vos serveurs et la source de données dans Grafana.

Vos métriques sur la durée, sur votre VPS

Un VPS ServOrbit Ubuntu 24.04 avec 1 Go de RAM suffit pour démarrer VictoriaMetrics. Installation en un clic depuis le Marketplace, HTTPS sur votre domaine ou sur le sous-domaine gratuit du VPS, mot de passe généré pour vous.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet