Logstash Grok-Muster

Logstash Grok-Muster

Zunächst einmal entschuldige ich mich dafür, ich bin ziemlich schlecht in regulären Ausdrücken und versuche, ein benutzerdefiniertes Muster zu schreiben (da ich im vorhandenen Grok-Muster nichts finden kann oder vielleicht etwas übersehe), um SVN-Protokolle zu analysieren, die im Format von

r24|prashant|2015-02-26 12:38:04 -0800 (Thu, 26 Feb 2015)|33|Log: ABC-123 / Initial version||A   test/log_testing1 A   test/log_testing2 A   test/log_testing3 A   test/log_testing4 A   test/log_testing5 \n

Es hat also das Format

$REVISION:$USER ID:$DATE:$CHECKED IN MESSAGE:$FILE CHECKED IN 

Also habe ich ein benutzerdefiniertes Muster geschrieben

SVN [r0-9]
SVN_TIMESTAMP %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?  (%{DAY}, %{MONTHDAY} %{MONTH} %{YEAR})

und meine Logstash-Conf würde für den Filterabschnitt so aussehen

filter {
  grok {
  match => { "message" => "%{SVN:revision}|%{USERNAME:username}|%{SVN_TIMESTAMP:svntimestamp}|%{GREEDYDATA:syslog_message}||%{GREEDYDATA:syslog_message" }
}

}

Ich bin nicht sicher, ob es richtig ist, aber wie immer funktioniert es nicht. Jede Hilfe ist wirklich willkommen

Antwort1

Hier ist eine einfachere Version eines Musters, das Ihnen beim Einstieg helfen könnte:

(?<SVN>[0-9]+)\|%{USERNAME:username}\|(?<SVN_TIMESTAMP>[^\|]+)\|%{GREEDYDATA:syslog_message}

Der Einfachheit halber habe ich keine benannten Muster verwendet und der Zeitstempel ist überhaupt nicht sehr spezifisch, aber das sollte einfacher zu beheben sein.

Wichtige Hinweise:

  • Das Pipe-Zeichen ist in diesen Ausdrücken ein logisches ODER und muss maskiert werden.
  • wie @tigran anmerkte: Sie benötigen das Pluszeichen für „eine oder mehrere“ Ziffern in der SVN-Revision
  • Ihr SVN_TIMESTAMP-Muster ist sehr komplex, scheint aber nicht ganz richtig zu sein. Zumindest müssen Sie die Klammern escapen, um eine Übereinstimmung zu erzielen.

Ich empfehle Ihnen, Ihre Eingabe und mein Muster zu nehmen und es inhttps://grokdebug.herokuapp.com/-- so können Sie es schrittweise entsprechend Ihren tatsächlichen Anforderungen erweitern.

verwandte Informationen