2015-08-18 4 views
0

Im пытается хранить старые файлы журналов в эластичных и im, используя для этого logstash.Logstash Фильтр даты в специальном формате даты

отметки времени в журналах имеют следующий формат:

13 AUG 2015 | 07:04:35 | ....... 

первая проблема заключалась в том месяце в верхнем регистре, так что я скопировал «МЕСЯЦ» образец, как он появляется в ГРОК-моделей и в верхнем регистре все это:

оригинальный МЕСЯЦ:

MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b 

мой верхний регистр "MONTHCAP":

MONTHCAP \b(?:JAN(?:UARY)?|FEB(?:RUARY)?|MAR(?:CH)?|APR(?:IL)?|MAY|JUN(?:E)?|JUL(?:Y)?|AUG(?:UST)?|SEP(?:TEMBER)?|OCT(?:OBER)?|NOV(?:EMBER)?|DEC(?:EMBER)?)\b 

Следующая вещь, которую я пытаюсь сделать, это использовать фильтр дат, упругую использует метку времени из журнала, как @timestamp подал и не время, линии хранится в Эластичность:

date{ 
       match => ["MONTHDAY","dd","MONTHCAP","MMM","YEAR","yyyy","TIME","HH:mm:ss"] 
    } 

Проблема заключается в том что я получаю следующее сообщение об ошибке пытается сохранить данные:

Error: Cannot register filter date plugin. The error reported is: 
Illegal pattern component: O for pattern 'MONTHCAP' 

дополнительная информация: это Grok фильтр я использовать для разбора строки журнала:

%{MONTHDAY} %{MONTHCAP} %{YEAR} \| %{TIME} \| 

любая идея, почему я продолжаю получать эту ошибку, когда трэп, который я использую, является «МММ»? Чин!

ответ

0

В документации матч предназначен только для одного поля:

match => [ "logdate", "MMM dd YYY HH:mm:ss", 
     "MMM d YYY HH:mm:ss", "ISO8601" ] 

занимает первое решение, которое вышлет с logdate поля.

Вам необходимо создать поле, которое является вашей датой и после того, как вы сможете сделать свой фильтр даты.

match => [logdate, dd MMM yyyy HH:mm:ss] 
+0

Спасибо, я понял. Но как я помещаю все отдельные поля временной метки в одну? –

+0

фильтр { мутировать { add_field => { "Foo _% {SomeField}" => "Привет, мир, от% {HOST}"}} } – mherbert

+0

БЛАГОДАРЯ. теперь, когда я получил его, и я добавил все поля, чтобы создать его, как вы предложили 'add_field => {"logTimeStamp" => "% {day}% {month}% {year}% {time}"}', но для некоторых причина, по которой фильтр даты по-прежнему не работает :(date {match => ["logTimeStamp", "dd MMM YYYY HH: mm: ss"]}. Может ли это быть тот факт, что месяц - это буквы верхнего регистра, т.е. JAN, FEB и т. Д., А MMM представляет Jan, Feb, ... и т. Д.? –

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