This article is available in French.
1. remap et VRL #
Le cœur de Vector.
Principe #
remap exécute un programme VRL (Vector Remap Language) sur chaque événement. VRL est typé et vérifié à la compilation : une fonction qui peut échouer (parse_json) doit être gérée explicitement, sinon la configuration est refusée.
transforms:
nettoyer:
type: remap
inputs: [kube]
drop_on_error: true
reroute_dropped: true # les erreurs partent vers nettoyer.dropped
source: |
. = merge(., parse_json(.message) ?? {}) # ?? : valeur de repli si l'analyse échoue
.level = downcase(string(.level) ?? "info")
.status = to_int(.status) ?? null
.timestamp = parse_timestamp(.time, "%+") ?? now()
.email = redact(.email, filters: [r'[^@]+@']) # masquage RGPD
del(.password)
if .path == "/healthz" { abort } # supprimer l'événementGestion des erreurs #
| Écriture | Comportement |
|---|---|
parse_json!(.message) | Interrompt l'événement en cas d'erreur (erreur à l'exécution) |
parse_json(.message) ?? {} | Valeur de repli |
x, err = parse_json(.message) | Récupère l'erreur pour la traiter |
abort | Abandonne l'événement (ou le réachemine avec reroute_dropped) |
2. Router, filtrer, réduire #
Maîtriser le volume.
Les transforms de flux #
| Transform | Rôle |
|---|---|
route | Sorties nommées selon des conditions VRL |
filter | Garder les événements qui respectent une condition |
sample | Ne garder qu'une fraction (avec exclusion des erreurs) |
dedupe | Supprimer les doublons sur des champs |
reduce | Fusionner plusieurs événements (multiligne, transactions) |
throttle | Limiter le débit par clé |
log_to_metric | Compteurs et histogrammes dérivés des logs |
aggregate | Agréger des métriques sur un intervalle |
aiguiller:
type: route
inputs: [nettoyer]
route:
erreurs: '.level == "error"'
lent: 'to_int(.duration_ms) ?? 0 > 1000'
echantillon:
type: sample
inputs: [aiguiller._unmatched]
rate: 10 # 1 événement sur 10
exclude: '.status >= 500'
compteur_erreurs:
type: log_to_metric
inputs: [aiguiller.erreurs]
metrics:
- type: counter
field: level
name: erreurs_total
tags: { service: "{{ service }}" }3. Tester les transformations #
Des tests unitaires dans la configuration.
Tests #
tests:
- name: une ligne JSON est analysée et le mot de passe supprimé
inputs:
- insert_at: nettoyer
type: log
log_fields:
message: '{"level":"ERROR","status":"503","password":"x"}'
outputs:
- extract_from: nettoyer
conditions:
- type: vrl
source: |
assert_eq!(.level, "error")
assert_eq!(.status, 503)
assert!(!exists(.password))vector test /etc/vector/vector.yaml
vector vrl # console interactive pour mettre au point un programme VRLBonne Pratique : Intégrezvector validateetvector testà la CI : une erreur de VRL est détectée avant d'atteindre la production.
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Fluent Bit : pipeline, configuration et plugins essentiels
Les concepts de Fluent Bit (inputs, parsers, filters, tags et match, buffer, outputs), la configu...
OpenTelemetry Collector : les Processors (transformer, filtrer et protéger la télémétrie)
Maîtriser les processors du Collector OpenTelemetry : batch, memory_limiter, attributes, resource...
Grafana Alloy: Log Management with Loki
Discover how to configure Grafana Alloy to read log files, journald, or network streams, process ...
Logs Datadog avancés : index, filtres d'exclusion, Flex Logs, archives et Sensitive Data Scanner
Maîtriser coût et conformité des logs Datadog : pipelines et processeurs, index et rétention, fil...
Réduire, masquer et router la télémétrie avec Bindplane
Réduire les coûts d'ingestion avec Bindplane : filtres de sévérité, déduplication, échantillonnag...
Fluent Bit : les outputs (sorties), routage et fiabilité de l'envoi
Envoyer les données de Fluent Bit : routage par Match et Match_Regex, sorties Loki, Elasticsearch...
Bonnes pratiques Bindplane
Check-list pour exploiter Bindplane : organisation par labels et fleets, réduction mesurée, masqu...
Grafana Alloy : Collecte et Transformation de Télémétrie
Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer logs, métriques et tra...
Logs avancés avec OpenPipeline : traitement, masquage, buckets et rétention
Gérer les logs dans Dynatrace avec OpenPipeline : ingestion, routage, traitement DQL (parsing, en...