2014-10-15 2 views
1

Мой лог-файл имеет строки вида:Grok фильтр для logstash

10/13 14:05:18.192 [modulename]: [pid]: (debug level string): message string XYZ:<xyz value> 

где

  • modulename является строкой
  • pid представляет собой целое число
  • debug level string является строкой, как «отладка» или «информация» или «ошибка»
  • message string строка
  • xyz value представляет собой целое число

пример:

10/13 14:05:18.192 [MyModule]: [12345]: (debug): This is my message. XYZ: 987 

Я искал вокруг и попробовал несколько вещей, но я получаю _grokparsefailure. Может кто-нибудь помочь мне показать, какой фильтр я могу использовать в logstash для анализа этих журналов?

+1

Что вы пробовали? И вы пытались использовать http://grokdebug.herokuapp.com/ для постепенного добавления в свой шаблон? – Alcanzar

+0

Если я приведу примерный журнал для открытия в grokdebugger, он предлагает:% {SYSLOGPROG} {URIPATHPARAM}% {HAPROXYTIME}% {SYSLOG5424SD}:% {NAGIOSTIME}: (debug): Это мое сообщение. XYZ: 987, но когда я использую ссылку Debugger в grokdebugger и использую этот шаблон и предоставляю свой пример ввода, ему это не нравится. Кроме того, кажется, что grokdebugger обрабатывает 10/13 как путь? и pid как НАГИОСТИМ - не кажется правильным. – redkite

+0

'(? \ d \ d/\ d \ d)% {ВРЕМЯ: время} \ [% {WORD: module} \]: \ [% {WORD: pid} \]:' соответствует началу вашего журнала ... посмотрим, можете ли вы закончить его – Alcanzar

ответ

0

Прежде всего {GREEDYDATA} означает до конца события регистрации. Итак, весь текст, который находится после dbg_lvl, будет присвоен {GREEDYDATA}

Здесь попробуйте использовать следующий код. Проблема с вашим фильтром кода заключалась в том, что он не смог разобрать ничего после msg. Надеюсь это поможет.

(?<date>\d\d/\d\d) %{TIME:time} \[%{WORD:module}\]: \[%{WORD:pid}\]: \(%{WORD:log_level}\): %{CISCO_REASON}. %{WORD}: %{BASE10NUM:xyz_number}

+0

Это работает для большей части. Но я заметил, что всякий раз, когда строка сообщения имеет такие символы, как [] или! или ... или aaa.bbb.ccc, синтаксический анализ не выполняется. Где я могу найти определение CISCO_REASON и других встроенных парсеров, которые я могу использовать? В основном я хочу иметь возможность анализировать журналы с любой строкой между log_lvl: и XYZ:. – redkite

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