Шаблон logstash grok для журналов pgpool

У меня проблема с поиском правильного шаблона Grok для всех моих журналов, чтобы проанализировать их все с помощью logstash.

Пример моих логов:

1) 2016-04-13 19:55:40: pid 21950: LOG: pool_send_and_wait: Сообщение об ошибке или уведомлении от бэкэнда:: Идентификатор узла БД: 4 бэкэнд pid: 65156 инструкция: «UPDATE certname ......». .. (Остальная часть журнала не имеет значения)

2) 2016-04-13 19:55:40: pid 17555: FATAL: не удалось прочитать вид из бэкэнда

Мой шаблон Grok (который работает частично):

grok {match => {"message" => "% {GREEDYDATA: logdate}: pid% {NUMBER: pid}:% {LOGLEVEL: loglevel}:% {GREEDYDATA: logmessage}"}}

Как видите, это то, что меня волнует: 1) Дата журнала 2) PID 3) Уровень журнала 4) Само сообщение

За исключением приведенного выше шаблона, я также попытался указать дату с помощью шаблона \ A% {TIMESTAMP_ISO8601: timestamp} (точно так же, как отладчик Grok предложил мне).

Я предполагаю, что первый журнал является одним из моих проблемных журналов, потому что в нем дважды встречается слово «журнал», хотя во второй раз оно не появляется после двоеточия (в отличие от моего шаблона grok), поэтому у меня нет идея, почему он не выполняет операцию синтаксического анализа.

Фактически, мои журналы, в которых нет слова «журнал», дважды успешно проанализированы - мой шаблон работает частично.

Спасибо :)


person Shachar Ashkenazi    schedule 13.04.2016    source источник
comment
Старайтесь использовать GREEDYDATA только в конце шаблонов. Переключитесь на ISO8601, чтобы соответствовать дате и времени, и посмотрите, как это будет.   -  person Alain Collins    schedule 13.04.2016
comment
Я пробовал, не получилось   -  person Shachar Ashkenazi    schedule 13.04.2016


Ответы (1)


Уловка создания грок-паттернов заключается в том, чтобы начать слева, заставить первый работать и медленно двигаться вправо, пока не закончите.

Сделав это, вы увидите, что он перестает работать, когда вы добавляете% {LOGLEVEL}. Почему? Поскольку "LOG" не является допустимым для LOGLEVEL. Он ожидает таких вещей, как DEBUG и т. Д. Используйте вместо этого что-то вроде% {WORD}, и он отлично работает.

person Alain Collins    schedule 13.04.2016