1. Les filtres #
Transformer les événements.
Les filtres essentiels #
| Filtre | Rôle |
|---|---|
| mutate | renommer, convertir, supprimer, ajouter des champs |
| date | alimenter @timestamp depuis un champ date |
| json / kv | décoder du JSON ou des paires clé=valeur |
| drop | supprimer des événements inutiles |
| fingerprint | calculer 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}" }
}| dissect | grok | |
|---|---|---|
| Méthode | délimiteurs | expressions régulières |
| Performance | très rapide | plus coûteux |
| Format variable | non | oui (alternatives, optionnels) |
| Typage | avec mutate ou convert_datatype | dans le motif (:int) |
Bonne pratique : Combinez les deux : dissect pour l'en-tête fixe de la ligne, grok seulement sur la partie variable.
