Drop log-Meldungen mit einer bestimmten Zeichenfolge
Also ich habe log-Nachrichten im format :
[INFO] <blah.blah> 2016-06-27 21:41:38,263 some text
[INFO] <blah.blah> 2016-06-28 18:41:38,262 some other text
Möchte ich nun löschen Sie alle Protokolle, die nicht einen bestimmten string enthalten "xyz" und alle halten den rest. Ich will auch index timestamp.
grokdebug nicht viel helfen.
Dies ist mein Versuch :
input {
file {
path => "/Users/username/Desktop/validateLogconf/logs/*"
start_position => "beginning"
}
}
filter {
grok {
match => {
"message" => '%{SYSLOG5424SD:loglevel} <%{JAVACLASS:job}> %{GREEDYDATA:content}'
}
}
date {
match => [ "Date", "YYYY-mm-dd HH:mm:ss" ]
locale => en
}
}
output {
stdout {
codec => plain {
charset => "ISO-8859-1"
}
}
elasticsearch {
hosts => "http://localhost:9201"
index => "hello"
}
}
Ich bin neu grok, so Muster oben ist vielleicht nicht Sinn macht. Bitte helfen Sie.
Sollten Sie Fragen zwei Frage, statt nur einer.
InformationsquelleAutor Purak | 2016-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ablegen der Nachricht, die nicht die Zeichenfolge enthalten
xyz
:Ihre grok Muster nicht greifen das Datum Teil Ihrer Protokolle.
Sobald Sie ein Feld aus der grok pattern, der ein Datum enthält, können Sie invoque das Datum filter auf dieses Feld.
So Ihr grok filter sollte wie folgt Aussehen:
Ich fügte hinzu, ein Teil zu greifen, das Datum, das im Feld
Date
. Dann können Sie die Datum-filter:Habe ich den
,SSS
so, dass das format mit dem aus derDate
Feld.Das geparste Datum gespeichert werden, die
@timestamp
Feld, es sei denn, dies ist ausdrücklich anders angegeben mit dertarget
parameter.target => "Date"
... es überschreibt den ersten "Date" ?Ja, es überschreibt die
Date
Feld ersetzen einen string mit einem Datum. Wenn die target-option ist nicht vorhanden, wird Sie überschrieben die@timestamp
FeldCool! Danke! 🙂
Die offizielle Dokumentation sagt - "Für nicht-Formatierungs-syntax, müssen Sie in einfache Anführungszeichen um den Wert. Zum Beispiel, wenn Sie analysieren nach ISO8601 Zeit, "2015-01-01T01:12:23" das kleine "T" ist keine gültige Uhrzeit-format, und Sie möchten sagen "buchstäblich, ein T", das format wäre: "yyyy-MM-dd NICHT'HH:mm:ss""
Muss ich hinzufügen, das T wie in
match => [ "Date", "YYYY-mm-dd'T'HH:mm:ss" ]
? Obwohl meine logs nicht ein "T".InformationsquelleAutor baudsp
prüfen, ob Ihre Nachricht enthält eine Teilzeichenfolge, die Sie tun können:
So, in Ihrem Fall können Sie verwenden, wenn zum aufrufen der drop{} filter, oder Sie können wickeln Sie Ihre Ausgabe-plugin.
Um ein Datum zu analysieren und schreiben Sie es zurück zu Ihrem timestamp-Feld, das Sie verwenden können, so etwas wie dieses:
Dieser passt mein Zeitstempel:
Hoffe, das hilft,
Artur
InformationsquelleAutor pandaadb