Удалить строку журнала, содержащую хеш-символ

В моем грузоотправителе Logstash я хочу отфильтровать строки, прокомментированные хеш-символом:

#This log row should be dropped.
But one this should not.

Я смог использовать фильтр grep, но, поскольку он не рекомендуется (будет выведен из эксплуатации), я пытаюсь вместо этого использовать фильтр grok. Этот фильтр не работает:

grok {
  match => ["message", "^#.*"]
  drop_if_match => true
}

Я также попытался поместить регулярное выражение в файл пользовательского шаблона, но это не помогло. Любые идеи?


person Jonas Byström    schedule 26.11.2013    source источник


Ответы (2)


Еще проще, если вам интересно:

filter {
    if ([message] =~ /^#/) {
        drop{}
    }
}

В последних версиях Logstash больше внимания уделялось логике ветвления непосредственно в конфигурационных файлах. Требуется немного привыкнуть, но довольно удобно, как только вы это сделаете.

person rutter    schedule 26.11.2013
comment
Вам не нужны дополнительные () вокруг условия if. if [message =~ ^#] { теперь достаточно. - person jmcollin92; 05.04.2016

Правильный ответ: ошибка в drop_if_match=>true (Logstash v1.2.2). Используйте этот тип обходного пути:

grok {
  ...
  add_tag => ["some_comment"]
}
if "some_comment" in [tags] {
  drop {}
}
person Jonas Byström    schedule 26.11.2013