RousselTMLEARNING

Article · Vector : de la découverte à l'expertise

Les transforms en détail

1. remap et VRL #

Le cœur de Vector.

Principe #

Topologie Vector
Les transforms se chaînent : chacune déclare ses inputs.

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énement

Gestion des erreurs #

ÉcritureComportement
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
abortAbandonne l'événement (ou le réachemine avec reroute_dropped)

2. Router, filtrer, réduire #

Maîtriser le volume.

Les transforms de flux #

Topologie de transformations
Chaque branche de route est une sortie nommée (route.erreurs).
TransformRôle
routeSorties nommées selon des conditions VRL
filterGarder les événements qui respectent une condition
sampleNe garder qu'une fraction (avec exclusion des erreurs)
dedupeSupprimer les doublons sur des champs
reduceFusionner plusieurs événements (multiligne, transactions)
throttleLimiter le débit par clé
log_to_metricCompteurs et histogrammes dérivés des logs
aggregateAgré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 VRL
Bonne Pratique : Intégrez vector validate et vector test à la CI : une erreur de VRL est détectée avant d'atteindre la production.

📄 Vector : les transforms en détail (remap et VRL, route, filter, réduction et métriques) →

Mon suivi

  • ⏱ Durée estimée : ≈ 9 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

Vector : sources, transforms, sinks et topologie

Les concepts de Vector (sources, transforms, sinks), la configuration YAML, les composants couran...

Transformer avec VRL et tester ses pipelines Vector

Le langage VRL (Vector Remap Language) : analyse de logs (JSON, regex, syslog), gestion des erreu...

Vector : les sources en détail

Les sources de Vector : fichiers, logs Kubernetes, journald, syslog, sockets, HTTP, OpenTelemetry...

Vector : les sinks en détail (destinations, lots, tampons et réessais)

Envoyer les événements de Vector : sinks Loki, Elasticsearch, S3, Kafka, OpenTelemetry, Prometheu...

Fluent Bit : les inputs (entrées) du pipeline en détail

Tout sur les inputs de Fluent Bit : rôle des tags, lecture de fichiers avec tail (positions, rota...

Bonnes pratiques de collecte de logs avec Fluent Bit et Vector

Check-list de production pour la collecte de logs : structure, filtrage à la source, masquage, ta...

Fluent Bit ou Vector ? Choisir, combiner et migrer

Comparer Fluent Bit et Vector (performances, transformations, écosystème, gouvernance), les combi...

Collecteurs de logs légers : Fluent Bit, Vector et les autres

Pourquoi un collecteur de logs, ce qui distingue les agents légers (Fluent Bit, Vector) des colle...

Fluent Bit : parsers et filters, structurer et transformer les logs

Structurer et transformer les logs dans Fluent Bit : parsers (json, regex, logfmt, ltsv), parsers...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !