2014-06-24 10 views
5

Ich habe eine Zeile in meinen Log-Dateien, die buchstäblich nur ein Semikolon in ihnen haben. Ich gehe davon aus, dass es an die vorherige Zeile angehängt ist. Logstash druckt sie ständig, und ich möchte diese fallen lassen, wenn es eine Zeile gibt, die mit einem beginnt;So entfernen Sie ein Ereignis aus dem Logstash?

Dies ist, was druckt logstash:

"message" => ";/r" 
"@version" => "1" 
"@timestamp" => 2014-06-24T15:39:00.655Z," 
"type" => "BCM_Core", 
"host => XXXXXXXXXXX", 
"Path => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
"tags" => [ 
[0] "_grokparsefailureZ" 
], 
"BCM_UTC_TIME" =>"2014-06-24%{time}Z" 

ich versucht habe mehrzeilige zu verwenden, um vorherige Zeile anhängen so logstash Druck stoppen würde:

multiline{ 
    type => "BCM_Core" 
    pattern => "\;" 
    negate => true 
    what => "previous" 
} 

aber logstash noch ihnen ausdrucken. Wie kann ich logstash es fallen lassen?

Antwort

12

einfach ein Drop-Filter verwenden, jede Zeile zu löschen, die mit ; beginnt:

filter { 
    if ([message] =~ "^;") { 
     drop {} 
    } 
} 

Obwohl auf der Grundlage Ihrer Ausgabe, es ist wirklich ;/r nicht ;\r, so müssen Sie möglicherweise anpassen, wenn die Ausgabe nicht nur eine ist Beispiel.

können Sie auch fallen nur irgendetwas, das grok versagt:

if "_grokparsefailure" in [tags] { drop {} } 
+0

warum ist es,/^; $ /? Sollte es nicht nur sein /;? Und ja meine Ausgabe war "; \ r", also worauf sollte ich den Filter setzen? – simhuang

+0

Das $ passt am Ende der Zeile (also im Grunde sagen nur Zeilen mit nur einer ignorieren; um die Möglichkeit zu vermeiden, zu viel zu verlieren). Du könntest wohl einfach/^;/- also alles angefangen mit; ... und oops meine Syntax ist falsch für Logstash .. behoben – Alcanzar

+0

funktioniert! Danke für die Hilfe! – simhuang

Verwandte Themen