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
| VictoriaMetrics | Prometheus seul | |
|---|---|---|
| Rétention typique | Plusieurs mois à plusieurs années | Quinze jours par défaut |
| Centraliser plusieurs serveurs | Oui, par remote_write | Non, une instance par périmètre |
| Langage de requête | PromQL et MetricsQL | PromQL |
| Formats d'ingestion | Prometheus, InfluxDB, Graphite, OpenTSDB, OTLP | Collecte Prometheus |
| Grafana | Source de données Prometheus | Source de données Prometheus |
| Collecte des cibles | Possible, mais on la laisse à Prometheus ou vmagent | Oui, 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
Préparer le répertoire et le mot de passe
Créez le répertoire de l'application et un fichier
.envqui porte le mot de passe de l'utilisateuradmin.mkdir -p /opt/victoriametrics && cd /opt/victoriametrics echo "ADMIN_PASSWORD=$(openssl rand -hex 16)" > .env chmod 600 .envÉcrire le docker-compose.yml
Le port n'est publié que sur la boucle locale : seul nginx y accède. Les deux options
-httpAuthprotègent tous les points d'accès — interface, requêtes et ingestion.-retentionPeriod=12garde 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: {}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 20Publier 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 lotsremote_writedé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/prometheusSi 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 -dInstallation 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.