2016-08-01 6 views
1

Ich bin neu mit Logstash und Grok-Filter. Ich versuche, eine Zeichenfolge aus einem Apache-Zugriffsprotokoll, mit einem grok Filter in logstash zu analysieren, wo der Benutzername Teil des Zugriffsprotokolls in folgendem Format ist:Eine variable Länge Punkt getrennte Zeichenfolge in grok

name1.name2.name3.namex.id 

ich ein neues Feld BENUTZERNAME genannt bauen will wo ist name1.name2.name3.namex mit der ID abgestreift. Ich habe es funktioniert, aber das Problem ist, dass die Anzahl der Namen variabel ist. Manchmal gibt es drei Namen (lastname.firstname.middlename) und manchmal gibt es 4 Namen (lastname.firstname.middlename.suffix - SMITH.GEORGE.ALLEN.JR

%{WORD:lastname}.%{WORD:firstname}.%{WORD:middle}.%{WORD:id} 

Wenn es 4 Namen oder mehr tut es Ich habe gehofft, dass jemand mir mit dem richtigen Grokfilter helfen kann Ich weiß, dass ich etwas vermisse, ziemlich einfach.

Antwort

2

Sie konnten zwei Muster verwenden und ein anderes hinzufügen, das übereinstimmt, wenn es 4 Felder gibt:

%{WORD:lastname}.%{WORD:firstname}.%{WORD:middle}.%{WORD:suffix}.%{WORD:id} 

Aber in diesem Fall erstellen Sie Felder, dass es klingt wie du willst nicht einmal.

Wie wärs mit einem Muster, das die ID abspaltet, alles vor ihm verlassen, vielleicht:

%{DATA:name}.%{INT} 
Verwandte Themen