2014-09-25 3 views
3

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

=   Build Stamp: 10:45:33 On Apr 4 2014   = 

Так я запустить фильтр на ГРОК отладчик, но все еще невежественный о том, как удалить слово На

grok { 
patterns_dir => "./patterns" 
match => { "message" => "%{F_TIMESTAMP:timestamp}" } 
} 

date { 
match => [ "timestamp" , "HH:mm:ss MMM d yyyy" , "HH:mm:ss MMM dd yyyy" ] 
locale => "en" 
} 

шаблон файла,

F_TIMESTAMP %{TIME} \On %{MONTH} +%{MONTHDAY} %{YEAR} 

Мой выходной ток для отметки времени будет

10:45:33 На 4 апреля 2014 года на ГРОК отладчика.

Тогда как я могу сделать его совместимым/совпадающим с logstash @timestamp?

ответ

7

Вы можете извлечь каждую часть даты и объединить в другое поле без ключевого слова On.

Вы можете достичь этого следующее:

filter { 
    grok {   
     match => { "message" => "%{F_TIMESTAMP}" } 
    } 
    mutate { 
     add_field => { 
      "timestamp" => "%{time} %{month} %{monthday} %{year}" 
     } 
    } 
    date { 
     match => [ "timestamp" , "HH:mm:ss MMM d yyyy" , "HH:mm:ss MMM dd yyyy" ] 
     locale => "en" 
    } 
    mutate { 
     remove_field => [ "time" ,"month","monthday","year","timestamp"] 
    } 
} 

F_TIMESTAMP %{TIME:time}\s*On\s*%{MONTH:month}\s*%{MONTHDAY:monthday}\s*%{YEAR:year}

Сво работает нормально для меня.

+0

Спасибо, это работает для меня, но позже я узнал, что часовой тег HH не отображается правильно в @timestamp "=>" 2014-04-04T02: 45: 33.000Z, так как вы можете видеть, что части HH становятся 02 вместо 10. Затем я удалил тег remove_field мутата, чтобы увидеть, как в часовую метку времени отображается часовая часть, показывающая 10, так что это действительно озадачивает меня сейчас. –

+0

logstash изменил 10 на 2, потому что мое местоположение +8 от UTC. Так что это будет другое значение, если я запустил это в другом месте/стране. Думаю, мне нужно добавить поле часового пояса для этого. –

+0

Да. Вы должны преобразовать его в свое местное время. Может выполняться рубиновым скриптом как: 'ruby {code =>" event ['@ timestamp'] = event ['@ timestamp']. Getlocal "}' –

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