2017-02-28 1 views
0

J'ai donc écrit un filtre pour laisser tomber tout événement qui a un certain champ avec une valeur nulle:filtre Logstash qui supprime les événements quand quelque chose est nul

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

Cependant, cela ne fonctionne pas. Est-ce que quelqu'un a une idée pourquoi? Les noms des paramètres sont corrects

Logstash version 5.2

+0

Cette réponse pourrait aider à: http: // stackoverflow .com/a/28959437/4604579 – Val

Répondre

4

Votre filtre vérifie que [packet_source][ip] == "" existe et est pas nulle.

Je ne sais pas ce que [type] == "flow" est, mais je pense que vous voulez

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

Vous pouvez également utiliser !("" in [packet_source][ip]) ou !([packet_source][ip] == "")

Cependant, par la documentation, il n'y a actuellement aucun moyen de faire la différence entre un champ qui doesn n'existe pas par rapport à un champ qui est simplement faux.

Vous pouvez faire référence: https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html

+0

Merci beaucoup! J'ai été troublé par un couple d'autres messages du forum que j'ai vu, mais ce que vous avez dit fonctionne. '[Type] ==" flow "' Est-ce que les données Netflow sont collectées par [Packetbeat] (https://www.elastic.co/products/beats/packetbeat) – BenjaFriend

1

Ajout de @ réponse de cattastrophe, essayez ceci ainsi:

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

ET

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