Поэтому я написал фильтр для удаления любого события, имеющего определенное поле со значением null:

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

Однако это не работает. У кого-нибудь есть идеи почему? Названия параметров верны

Logstash версия 5.2

0
BenjaFriend 28 Фев 2017 в 20:32

2 ответа

Лучший ответ

Ваш фильтр проверяет, что [packet_source][ip] == "" существует и является не пустым.

Не уверен, что [type] == "flow", но я думаю, что вы хотите

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

Вы также можете использовать !("" in [packet_source][ip]) или !([packet_source][ip] == "")

Однако, согласно документации, в настоящее время нет способа провести различие между несуществующим полем и полем, которое просто ложно.

Вы можете сослаться на: https: //www.elastic. сотрудничество / руководство / о / logstash / ток / событийно- зависимый configuration.html

4
cattastrophe 1 Мар 2017 в 06:43

В дополнение к ответу @ cattastrophe, попробуйте также:

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

И

if[type] == "flow" and [packet_source][ip] == 'null'{ <-- please try with double quotes around null as well
        drop { }        
}
1
Kulasangar 1 Мар 2017 в 11:11