2015-07-16 2 views
0

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

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' 

// EDIT: исправлены TOMCAT_DATESTAMP к CATALINA_DATESTAMP, который: не

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

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

ответ

0

Проблема, вероятно, вызвана шаблоном TOMCAT_DATESTAMP. Когда вы посмотрите на grok default patterns for java, вы увидите, что он не соответствует вашему вводу.

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

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

Ваш вход:

Jul 15, 2015 9:33:23 AM 

Либо вы изменить свой вход, чтобы соответствовать шаблону или определить другой шаблон. После мог бы удовлетворить ваши цели:

%{MONTH} %{MONTHDAY}, %{YEAR} %{TIME} 
+0

Я сделал ошибку в моем примере, я имел в виду положить% {CATALINA_DATESTAMP}, которая делает матч, и без: logTimestamp части, она проходит ... с: logTimestamp он терпит неудачу , – DUBYATOO

+0

Какую версию Logstash вы используете? Вы можете использовать _match_ вместо _pattern_ (_pattern_ is [устарело] (https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#plugins-filters-grok-pattern)) , – hurb

+0

Я использовал 1.4.2, когда эта проблема возникла ... С тех пор я переключился на 1.5.2 и теперь все работает – DUBYATOO

Смежные вопросы