_grokparsefailure при включении семантической части

Я тестирую свою конфигурацию logstash с помощью rspec, чтобы она соответствовала базовому журналу tomcat, но когда я указываю поля в моем шаблоне grok, он терпит неудачу (без полей это удается!).

config <<-CONFIG
filter {
  grok {
    patterns_dir -> "./patterns"
    pattern => "%{CATALINA_DATESTAMP:logTimestamp} %{JAVACLASS} %{WORD}"
  }
}
CONFIG

sample 'Jul 15, 2015 9:33:23 AM org.apache.catalina.core.ApplicationContext log'

// РЕДАКТИРОВАТЬ: исправлено TOMCAT_DATESTAMP на CATALINA_DATESTAMP, что:

CATALINA_DATESTAMP %{MONTH} %{MONTHDAY}, 20%{YEAR} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) (?:AM|PM)

Когда в шаблоне присутствует часть «: logTimestamp», ничего не сопоставляется. когда он удален, он соответствует строке ... любые идеи о том, почему? Это ошибка пользователя, ошибка установки или что-то еще?


person DUBYATOO    schedule 16.07.2015    source источник


Ответы (1)


Вероятно, проблема вызвана шаблоном TOMCAT_DATESTAMP. Когда вы посмотрите на шаблоны по умолчанию для java вы увидите, что это не соответствует вашему вводу.

Это определение паттерна:

TOMCAT_DATESTAMP 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) %{ISO8601_TIMEZONE}

Ваш вклад:

Jul 15, 2015 9:33:23 AM

Вы либо изменяете ввод, чтобы он соответствовал шаблону, либо определяете другой шаблон. Следующее может подойти вашей цели:

 %{MONTH} %{MONTHDAY}, %{YEAR} %{TIME}
person hurb    schedule 16.07.2015
comment
Я допустил ошибку в своем образце, я хотел поставить% {CATALINA_DATESTAMP}, который действительно соответствует, и без части: logTimestamp он проходит ... с: logTimestamp он не работает. - person DUBYATOO; 17.07.2015
comment
Какую версию Logstash вы используете? Вы можете рассмотреть возможность использования match вместо pattern (pattern is устарело). - person hurb; 19.07.2015
comment
Я использовал 1.4.2, когда возникла эта проблема ... С тех пор я перешел на 1.5.2, и теперь все работает - person DUBYATOO; 20.07.2015