#logstash #logstash-grok #logstash-filter
#logstash #logstash-grok #logstash-фильтр
Вопрос:
У меня есть фильтр LogStash, я хотел бы знать, какие события в моих файлах журналов были удалены, поскольку я не вижу их в выходном файле logstash. Как это сделать?
Мой фильтр выглядит следующим образом:
filter {
grok {
patterns_dir => "C:logstash-7.4.2patterns"
match => { "message" => "^[%{TIMESTAMP_ISO8601:timestamp}][%{LOGLEVEL:level}][%{TThread:thread}][%{JAVACLASS:class}] %{GREEDYDATA:msg}" }
}
if "_grokparsefailure" in [tags] {
drop{}
}
}
Ответ №1:
Когда вы drop
создаете событие в своем конвейере, оно перестает существовать для вашего конвейера, вы не увидите его ни в одном выводе, вы не можете удалить событие и сохранить его в выводе.
В вашем случае вы удаляете события, которые не соответствуют вашему grok
фильтру, если вы хотите знать, какие события не обрабатываются, вам нужно прекратить удаление этих событий, а затем перенаправить эти события на другой вывод для лучшего анализа, если вы хотите, вы также можете сохранить их в том же выводе и отфильтровать позже.
Вы можете использовать что-то вроде следующей конфигурации.
output {
if "_grokparsefailure" in [tags] {
output to store failed events
}
if "_grokparsefailure" not in [tags] {
normal output for the other events
}
}
Вы также можете запустить logstash с уровнем журнала, установленным на debug, но он будет регистрировать много материала, и в вашем случае это не лучший способ продолжить.
Комментарии:
1. Ах, я не знал, что вы можете получить доступ к состоянию grok вне области действия фильтра. Попробую это.
2. Тег
_grokparsefailure
применяется по умолчаниюgrok
фильтром, когда он не может соответствовать сообщению, вы также можете изменить этот тег .