1. Depuis Prometheus #
Le stockage long terme en une ligne.
remote_write #
# prometheus.yml
remote_write:
- url: http://vm:8428/api/v1/write
queue_config: { max_samples_per_send: 10000, capacity: 20000, max_shards: 30 }Prometheus garde une rétention courte pour ses alertes locales ; VictoriaMetrics conserve l'historique.
2. Scraper directement #
Sans Prometheus.
promscrape #
VictoriaMetrics et vmagent comprennent le fichier de configuration de Prometheus (scrape_configs, découvertes de services, relabeling) :
victoria-metrics -promscrape.config=/etc/prometheus/prometheus.yml -storageDataPath=/data
# ou, plus courant, avec vmagent
vmagent -promscrape.config=/etc/prometheus/prometheus.yml \
-remoteWrite.url=http://vm:8428/api/v1/writeLes cibles et leur état s'affichent sur /targets ; /service-discovery montre les labels avant et après relabeling.
3. vmagent #
Un collecteur robuste.
Fonctions #
| Fonction | Option |
|---|---|
| Tampon disque si la destination est indisponible | -remoteWrite.tmpDataPath, -remoteWrite.maxDiskUsagePerURL |
| Plusieurs destinations (réplication) | plusieurs -remoteWrite.url |
| Relabeling avant envoi | -remoteWrite.urlRelabelConfig |
| Agrégation en flux | -streamAggr.config (réduire la cardinalité avant stockage) |
| Collecte répartie | -promscrape.cluster.membersCount, -promscrape.cluster.memberNum |
| Réception de protocoles | InfluxDB, Graphite, OpenTSDB, OTLP |
vmagent \
-promscrape.config=/etc/vmagent/scrape.yml \
-remoteWrite.url=http://vm-eu:8428/api/v1/write \
-remoteWrite.url=http://vm-us:8428/api/v1/write \
-remoteWrite.tmpDataPath=/var/lib/vmagent \
-remoteWrite.maxDiskUsagePerURL=10GBBonne Pratique : vmagent remplace souvent Prometheus en mode agent : moins de mémoire, tampon disque persistant et réplication native vers plusieurs stockages.
Agrégation en flux #
# stream-aggr.yml : remplacer les séries par instance par un total par service
- match: 'http_requests_total'
interval: 1m
by: [service, code]
outputs: [total]Le résultat (http_requests_total:1m_by_code_service_total) est envoyé à la place ou en plus des séries brutes : utile pour des métriques à très forte cardinalité dont seul l'agrégat est consulté.
4. Autres protocoles #
Une porte d'entrée universelle.
Exemples #
# InfluxDB line protocol
curl -d 'cpu,host=web-1 usage=42.5' http://vm:8428/write
# Import au format Prometheus texte
curl -d 'temperature{salle="serveur"} 21.5' http://vm:8428/api/v1/import/prometheus
# OpenTelemetry (OTLP HTTP, métriques)
# http://vm:8428/opentelemetry/v1/metrics
# Export pour sauvegarde ou migration
curl -s 'http://vm:8428/api/v1/export?match[]={__name__="temperature"}'