Logstash каждый раз выдает _grokparsefailure

У меня установлена ​​самая последняя версия logstash (2.3), и я хочу проанализировать syslog с помощью фильтра grok. Итак, вот фильтр:

    filter {
  if [type] == "linux-syslog" {
    grok {
      match => { "message" => "^%{SYSLOGTIMESTAMP:syslog_timestamp}\s*%{SYSLOGHOST:syslog_hostname}\s*(%{PROG:syslog_program})?\s*(:?\[%{POSINT:syslog_pid}\])?:?\s*%{GREEDYDATA:syslog_message}[a-z]*\s*$" }
      patterns_dir => ["/var/opt/logstash/patterns"]
      add_tag => "syslog_everything"
      keep_empty_captures => "true"
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
  1. Вот что я получаю от logstash, пытаясь разобрать его:

             "message" => "Apr 20 14:31:35 node1 ansible-service: Invoked with name=logstash pattern=None enabled=True state=restarted sleep=None arguments= runlevel=default ",
            "@version" => "1",
          "@timestamp" => "2016-04-20T14:31:35.000Z",
                "path" => "/var/log/syslog",
                "host" => "node1",
                "type" => "linux-syslog",
    "syslog_timestamp" => "Apr 20 14:31:35",
     "syslog_hostname" => "node1",
      "syslog_program" => "ansible-service:",
          "syslog_pid" => nil,
      "syslog_message" => "Invoked with name=logstash pattern=None enabled=True state=restarted sleep=None arguments= runlevel=default ",
                "tags" => [
        [0] "syslog_everything",
        [1] "_grokparsefailure"
    ]
    

    }

  2. А также...

    { "message" => "20 апреля 14:35:10 node1 crontab[29052]: (vagrant) END EDIT (vagrant)", "@version" => "1", "@timestamp" => "2016-04 -20T14:35:10.000Z", "path" => "/var/log/syslog", "host" => "node1", "type" => "linux-syslog", "syslog_timestamp" => "Apr 20 14:35:10", "syslog_hostname" => "node1", "syslog_program" => "crontab", "syslog_pid" => "29052", "syslog_message" => "(vagrant) END EDIT (vagrant)" , "теги" => [ [0] "syslog_everything", [1] "_grokparsefailure" ] }


Что я здесь делаю неправильно? Я проверил это с помощью grokdebugger, и все прошло нормально...


person Philip    schedule 20.04.2016    source источник


Ответы (1)


Если поля создаются, значит грок работает. У вас, вероятно, есть еще одна строфа грока, которая терпит неудачу. Добавьте к каждому отдельный тег tag_on_failure.

person Alain Collins    schedule 20.04.2016
comment
Спасибо, добавление tag_on_failure ко всем моим фильтрам помогло найти неисправный. Я не знал, что [теги] — это одно пространство имен, общее для всех фильтров, я думал, что это просто поле для объявления одного фильтра. - person Philip; 21.04.2016