2015-09-10 1 views
1

J'ai un fichier journal (zope/plone event.log) qui utilise une chaîne personnalisée (par exemple "-----") comme diviseur entre les événements, comment grok pattern pour l'analyse ce fichier journal à logstash devrait être?Quel modèle de groins pour logstash multiline avec différents diviseurs d'événements

Voici un exemple comment l'apparence du journal comme:

------ 
2014-07-21T12:13:30 INFO ZServer HTTP server started at Mon Jul 21 12:13:30 2014 
     Hostname: localhost 
     Port: 8401 
------ 
2014-07-21T12:13:44 WARNING SecurityInfo Conflicting security declarations for "setText" 
------ 
2014-07-21T12:13:44 WARNING SecurityInfo Class "ATTopic" had conflicting security declarations 
------ 
2014-07-21T12:13:47 INFO DocFinderTab Applied patch version 1.0.5. 

Répondre

0

Vous devriez commencer par le codec ou filtre multiligne pour créer un événement unique pour le traitement.

EDIT:

Le doc donne cet exemple:

filter { 
    multiline { 
    pattern => "pattern, a regexp" 
    negate => boolean 
    what => "previous" or "next" 
    } 
} 

et décrit ce 'Négation' et 'quoi' faire. Espérons que le «motif» a du sens. Alors, qu'en est-il de "chaque ligne qui ne commence pas par une date appartient à la ligne précédente"? Cela pourrait être quelque chose comme ceci:

filter { 
    multiline { 
    negate => 'true' 
    pattern => "^%{TIMESTAMP_ISO8601} " 
    what => 'previous' 
    } 
} 

Vous resteriez avec le "----" à la fin de chaque ligne. Puisque vous ne les avez pas besoin comme délimiteurs, vous pouvez vous débarrasser d'eux (avant la strophe filtre multiligne):

if message =~ /^-+$/ { 
    drop{} 
} 
+0

J'ai vérifié le filtre multiligne ici http://logstash.net/docs/1.4. 1/filtres/multiligne. Cependant, il n'y a qu'une seule façon de spécifier un événement multiligne: définir le motif de la ligne suivante ou de la ligne précédente. Cependant, dans mon cas, l'événement est divisé par "-----" chaîne, pas la ligne de fin, de sorte que le modèle de début de tous pourrait varier –

+0

Vous pouvez dire que "tout ce qui n'est pas un ----- appartient à la ligne précédente ", etc –

+0

Oui, c'est vrai, mais je suis nouveau avec grok et je ne sais pas comment écrire cette règle. Savez-vous comment le faire ou me montrer un endroit où je peux apprendre à le faire? Merci d'avance! –