RousselTMLEARNING

Observabilité

Logstash : les filtres, grok et dissect

Version écrite des leçons vidéo : les filtres essentiels (mutate, date, json, kv, drop), le plugin grok et ses motifs, dissect, et comment choisir entre les deux.

1. Les filtres #

Transformer les événements.

Les filtres essentiels #

Ligne brute, découpage, date, mutate, document ECS.
FiltreRôle
mutaterenommer, convertir, supprimer, ajouter des champs
datealimenter @timestamp depuis un champ date
json / kvdécoder du JSON ou des paires clé=valeur
dropsupprimer des événements inutiles
fingerprintcalculer un identifiant stable
filter {
  json   { source => "message" skip_on_invalid_json => true }
  date   { match => ["time", "ISO8601"] remove_field => ["time"] }
  mutate {
    rename  => { "lvl" => "[log][level]" }
    convert => { "[http][response][status_code]" => "integer" }
  }
  if [url][path] == "/health" { drop {} }
}

2. Le plugin grok #

Des motifs nommés.

Principe #

grok associe des expressions régulières nommées à des champs : %{IP:[source][ip]} capture une adresse IP dans source.ip. Plus de 120 motifs sont fournis (IP, NUMBER, TIMESTAMP_ISO8601, COMBINEDAPACHELOG…).

# 2026-11-09T10:15:00Z ERROR 203.0.113.7 GET /api/commande 500 132ms
grok {
  match => { "message" => "%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:[log][level]} %{IP:[source][ip]} %{WORD:[http][request][method]} %{URIPATH:[url][path]} %{NUMBER:[http][response][status_code]:int} %{NUMBER:duree_ms:int}ms" }
}
Bonne pratique : Construisez vos motifs avec le Grok Debugger de Kibana (Dev Tools) et ancrez-les (^…$) : un motif non ancré qui échoue parcourt toute la ligne et coûte cher en CPU.
Erreur courante : Ignorer le tag _grokparsefailure : les lignes non reconnues partent sans structure et faussent les tableaux de bord. Surveillez-le et envoyez ces événements dans un data stream à part.

3. dissect ou grok ? #

Choisir le bon outil.

dissect #

dissect découpe la ligne selon des délimiteurs fixes, sans expression régulière : il est beaucoup plus rapide, mais ne sait pas gérer un format variable.

dissect {
  mapping => { "message" => "%{ts} %{[log][level]} %{[source][ip]} %{[http][request][method]} %{[url][path]} %{[http][response][status_code]} %{duree}" }
}
dissectgrok
Méthodedélimiteursexpressions régulières
Performancetrès rapideplus coûteux
Format variablenonoui (alternatives, optionnels)
Typageavec mutate ou convert_datatypedans le motif (:int)
Bonne pratique : Combinez les deux : dissect pour l'en-tête fixe de la ligne, grok seulement sur la partie variable.

Articles liés

Logstash : rôle, concept de pipeline et installation

Version écrite des leçons vidéo : à quoi sert Logstash, comment fonctionne un pipeline (inputs, filtres, sort…

Logstash : les entrées (inputs) et les sorties (outputs)

Version écrite des leçons vidéo : les inputs courants (beats, file, tcp/udp, http, kafka, jdbc) et les sortie…

Logstash : gérer les plugins et adopter Elastic Common Schema (ECS)

Version écrite des leçons vidéo : lister, installer, mettre à jour et embarquer hors ligne les plugins Logsta…

Pour aller plus loin

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 !