2016-04-11 8 views
1

Ich bin neu zu Logstash und Grok und habe eine Frage zu einem Muster. Ich versuche ein grok-Muster für meine Apache-Fehlerprotokolle zu erstellen. Allerdings bin ich ein wenig verwirrt über das folgende Verhalten.Loglevel Muster in GROK

Wenn ich die zugrunde liegende Spiel in http://grokdebug.herokuapp.com/ verwenden:

%{LOGLEVEL:severity%{IPV4:clientip}%{GREEDYDATA:errormsg} 

ich keine Übereinstimmung auf dem folgenden Protokoll Schnipsel erhalten:

[Sun 10. April 09.28.01 2016] [Fehler ] [client 111.11.111.111] Datei existiert nicht: /var/www/html/favicon.ico

nun die Muster funktionieren, wenn i% laufen {LOGLEVEL: Schwere} oder% {IPV4: clientip}% {GREEDYDATA: errormsg} seperat. Aber wenn ich es zusammen versuche, bekomme ich eine "no match" -Rückkehr.

Ich denke, das passiert, weil der% {LOGLEVEL: Schweregrad} den Rest des Protokolls abschneidet, aber ich kann nicht verstehen warum.

Hat jemand einen Vorschlag, was ich falsch mache?

Vielen Dank im Voraus.

Antwort

3

Wie bei allen nicht verankerten regulären Ausdrücken müssen Sie nach dem Starten des Abgleichs alle Angaben in der Zeichenfolge abgleichen. In Ihrem Muster haben Sie die Leerzeichen oder Klammern in Ihrer Stichprobe nicht berücksichtigt. (Das geht auch davon aus, dass das Fehlen von} nach "Schweregrad" eine Kopie & Paste-Fehler war).