Logstash удалить строки с Grok - PullRequest
0 голосов
/ 03 июня 2018

Мой план состоит в том, чтобы фильтровать файл журнала для определенного IP с помощью Logstash.

Я начал с простого IP-фильтра, который должен удалять все строки с недопустимым IP-адресом и впоследствии удаляться.

grok {
match => [ "ip_filter" , " %{IPV4:clientip}" ]
tag_on_failure => [ "_todelete" ]
}

Таким образом, каждая строка с недопустимым IP-адресом должна быть помечена _todelete, но в Kibana я вижу каждую строку, помеченную этим.Любые идеи, почему?

Мой следующий шаг будет удалить все строки с тегом "_todelete" с

grok {
     remove_tag => [ "_todelete" ]
  }

, что приведет меня к "_grokparsefailure"

Спасибоза вашу помощь!

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете использовать условие, основанное на теге, чтобы контролировать, отправляется ли строка на ваш выход ES в файле logstash.

Попробуйте что-то вроде этого:

output {
    if "_todelete" not in [tags] {
        elasticsearch {
        index => "index-%{+YYYY.MM.dd}"
        }
    }
}

добавив этоусловие должно фильтровать нежелательные строки и не выводить их на ваш индекс ES.

0 голосов
/ 04 июня 2018

Просто если кому-то тоже нужен ответ: проблема в том, что Грок искал место перед IP.В моем случае линия начиналась непосредственно с IP, поэтому я решил использовать

^% {IPV4: clientip}

...