Initial vault setup
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
---
|
||||
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](https://victoriametrics.com/) |
|
||||
| **GitHub** | [VictoriaMetrics/VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) |
|
||||
| **License** | Apache-2.0 |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 17.1k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-07 |
|
||||
| **Catégorie** | [[cat-monitoring|Monitoring]], Time Series Database |
|
||||
|
||||
## 📝 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)
|
||||
|
||||
```yaml
|
||||
# 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 :**
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```bash
|
||||
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](https://docs.victoriametrics.com/cluster-victoriametrics/).
|
||||
|
||||
## ⚙️ 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
|
||||
|
||||
- [GitHub VictoriaMetrics/VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics)
|
||||
- [Documentation officielle](https://docs.victoriametrics.com/)
|
||||
- [Blog technique](https://victoriametrics.com/blog/)
|
||||
- [Benchmarks vs Prometheus](https://victoriametrics.com/blog/our-results-are-better-than-prometheus/)
|
||||
- [VictoriaMetrics Cloud (managed)](https://victoriametrics.com/products/victoriametrics-cloud/)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-monitoring]] — Catégorie Monitoring
|
||||
- [[app-prometheus]] — Prometheus standard
|
||||
- [[app-grafana]] — Dashboards
|
||||
- [[app-cadvisor]] — Métriques containers
|
||||
- [[app-traefik]] — Reverse proxy HTTPS
|
||||
- [[observabilite]] — Vue d'ensemble observabilité
|
||||
- [[checklist-monitoring-minimal]] — Checklist
|
||||
Reference in New Issue
Block a user