[Logstash] Plusieurs événements par message


(Benjamin Carriou) #1

Bonjour tout le monde ! :slightly_smiling:

Je suis confronté à une problématique sous Logstash qui est la suivante.
Je récupère des événements depuis un firewall (Juniper). Ce dernier m'envoie parfois un message composé de plusieurs événements (même timestamp) sur la même ligne:

"message" => "<133>host: ... événement 1 ... <133>host: ... événement 2 ... <133>host: ... événement n ..."

Donc, quand je parse le message à l'aide de Grok, ce dernier ne match que le premier événement et drop les suivants. Étant donné qu'ils sont groupés sur la même ligne, l'utilisation d'un codec multiline ne semble pas fonctionner:

codec => multiline {
pattern => "^.?<[0-9]{3}>"
what => previous
negate => true
auto_flush_interval => 5
}

Auriez-vous des pistes ? :slightly_smiling:

Merci d'avance !


(Benjamin Carriou) #2

Bonjour,

Je poursuis mes investigations qui pourrait peut être vous donnez des idées :wink:
Est-ce qu'il serait possible de faire quelques chose du style:

split {
terminator => "^.<[0-9]{3}>"
}

grok {
match => { "message" => "..." }

J'ai essayé mais ça ne semble pas fonctionner.
Je n'ai que le premier événement qui est parser :confused:

Help me ^^


#3

Bonjour,

la config terminator n'est utilisable que comme une chaine de caractere et pas une expression régulière.

Si votre ligne ne contient pas d'autre fois le symbole "<", vous pourriez tenter un simple terminator => "<" sinon il faudrait manipuler le message peut-etre avec mutate => {gsub} pour inserer une chaine spéciale a utiliser après dans le filter split.


(system) #4