_grokparsefailure при успешном совпадении

Я начал использовать logstash для управления системным журналом. Чтобы проверить это, я отправляю с удаленной машины простые сообщения и пытаюсь проанализировать их с помощью logstash.

Единственная конфигурация Logstash, используемая через командную строку:

input {
        syslog {
                type => syslog
                port => 5514
        }
}

filter {
        grok {
                match =>  { "message" => "hello %{WORD:who}" }
                }
      }

output {
        stdout { }
        elasticsearch {
                host => "elk.example.com"
                cluster => "security"
                protocol => "http"
        }
}

Я получаю журналы, и они правильно анализируются (создается поле who). В то же время tags содержат _grokparsefailure.

Я отправляю протокол испытаний hello rambo3. Я вижу это как

2015-01-29T09:27:48.344+0000 10.242.136.232 <13>1 2015-01-29T10:27:48.113612+01:00 AA1.example.com testlog.txt - - - hello rambo3

Отладчик Grok также соглашается:

введите описание изображения здесь

Почему в теги добавлено _grokparsefailure?

Интересно, что одни и те же данные, отправленные через чистый tcp, правильно анализируются одним и тем же фильтром (_grokparsefailure отсутствует в тегах)


person WoJ    schedule 29.01.2015    source источник


Ответы (1)


_grokparsefailure не добавляется вашим собственным фильтром grok. Когда вы используете syslog input, формат системного журнала должен соответствовать RFC3164, как указано в здесь.

Обычно ввод Syslog анализирует журнал и добавляет соответствующий field, например log severity. Итак, в нем есть действие Grok. Однако журнал, который вы отправляете с удаленного сервера, имеет формат RFC 5424. Таким образом, logstash не может проанализировать журнал, а затем добавить тег _grokparsefailure.

person Ben Lim    schedule 30.01.2015