RousselTMLEARNING

Observabilité

Ingérer des métriques dans VictoriaMetrics : scraping, vmagent et remote write

Toutes les façons d'alimenter VictoriaMetrics : remote write depuis Prometheus, scraping intégré, vmagent et son tampon disque, relabeling, agrégation en flux, et autres protocoles (InfluxDB, OTLP, Graphite).

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/write

Les cibles et leur état s'affichent sur /targets ; /service-discovery montre les labels avant et après relabeling.

3. vmagent #

Un collecteur robuste.

Fonctions #

FonctionOption
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 protocolesInfluxDB, 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=10GB
Bonne 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"}'

Articles liés

VictoriaMetrics : pourquoi et comment, du nœud unique au cluster

Ce qu'apporte VictoriaMetrics par rapport à Prometheus seul, ses composants (single-node, vmagent, vmalert, c…

MetricsQL : PromQL avec des super-pouvoirs

Les différences entre MetricsQL et PromQL : fenêtres implicites, fonctions supplémentaires (range, rollup, la…

VictoriaMetrics en cluster : vminsert, vmselect, vmstorage et multi-tenant

L'architecture cluster de VictoriaMetrics : rôle de vminsert, vmselect et vmstorage, répartition et réplicati…

Pour aller plus loin