2017-02-28 4 views
0

Also schrieb ich einen Filter ein Ereignis zu löschen, die ein bestimmtes Feld mit einem Wert von null hat:Logstash Filter, die Ereignisse fällt, wenn etwas null ist

filter { 
    if[type] == "flow" and [packet_source][ip] == "" { 
      drop { } 
    } 
} 

Dies ist jedoch nicht funktioniert. Hat jemand eine Idee warum? Die Namen der Parameter korrekt sind

Logstash Version 5.2

+0

Diese Antwort helfen könnten: http: // Stackoverflow .com/a/28959437/4604579 – Val

Antwort

4

Ihre Filter prüft, dass [packet_source][ip] == "" existiert und nicht null.

nicht sicher, was [type] == "flow" ist, aber ich denke, Sie

filter { 
    if[type] == "flow" and ("" not in [packet_source][ip]) { 
    drop { } 
    } 
} 

Sie wollen auch !("" in [packet_source][ip]) oder !([packet_source][ip] == "")

jedoch verwenden können, gemäß der Dokumentation, gibt es derzeit keine Möglichkeit, zwischen einem Feld zu unterscheiden, die doesn Es gibt kein Feld, das einfach falsch ist.

Sie verweisen können: https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html

+0

Vielen Dank! Ich wurde durch ein paar andere Forenbeiträge verwirrt, die ich gesehen habe, aber was du gesagt hast, funktioniert. '[type] ==" flow "' Werden Netflow-Daten von [Packetbeat] gesammelt (https://www.elastic.co/products/beats/packetbeat) – BenjaFriend

1

zu @ Hinzufügen cattastrophe Antwort, versuchen Sie dies auch:

if "flow" in [type] and "" in [packet_source][ip]{  
    drop { }   
} 

UND

if[type] == "flow" and [packet_source][ip] == 'null'{ <-- please try with double quotes around null as well 
     drop { }   
}