2016-09-05 8 views
0

Я новичок в шаблонах grok, и я пытаюсь написать шаблон grok для ниже настраиваемой строки журнала. Я хочу извлечь значения полей, заданных в строке журнала, например. ServiceName, SystemDate, SequenceName и т.п., вместе с TID,[0] [timestamp] как. Любая помощь будет большой оценкой.Grok pattern для пользовательской строки журнала

Log:

TID: [0] [ESB] [2016-08-16 10:35:10,828] [jms-Worker-2] INFO {org.apache.synapse.mediators.builtin.LogMediator} - ServiceName = CustomerService_v1,SystemDate = 8/16/16 10:35 AM,ServerIP = 10.200.42.158,ServerHost = slllasp102.local,SequenceName = SendCustomerToTopic,Message = Going to Send Message to Customer Topic,MessageCode = null,ErrorMessage = null,ErrorDetail = null,ErrorException = null {org.apache.synapse.mediators.builtin.LogMediator} 

MyPattern:

\[%{TIMESTAMP_ISO8601:timestamp}\]\s+%{WORD:loglevel}\s+-\s+%{GREEDYDATA:ServiceName} 

Я не могу написать правильный шаблон, восстановить поля один за другим.

+1

Пожалуйста, обновите ваш вопрос, чтобы показать, что у вас есть уже пытался. Спасибо. –

+0

Мы не здесь, чтобы выполнять свою работу, вам нужно показать проблему, чтобы решить эту проблему. cf http://stackoverflow.com/help/how-to-ask – baudsp

+0

Чтобы помочь вам: http://grokconstructor.appspot.com/do/match, чтобы проверить ваш шаблон grok, https://github.com/logstash- plugins/logstash-patterns-core/tree/master/patterns/для шаблонов, с базовым в [grok-pattern] (https://github.com/logstash-plugins/logstash-patterns-core/blob/master/шаблоны/Grok-узоры). Также было бы лучше использовать фильтр kv для извлечения полей (вам придется сначала извлечь эту часть журнала с помощью grok) – baudsp

ответ

0

Я закончил свой шаблон ГРОК, он должен выглядеть следующим образом:

TID: \[%{INT:TID}\] \[ESB\] \[%{TIMESTAMP_ISO8601:timestamp}\]\[jms-Worker-2\]\s+%{WORD:loglevel} {%{GREEDYDATA}} - %{GREEDYDATA:fields} {%{GREEDYDATA}} 

Затем вы используете kv filter для извлечения полей. Это проще сделать, чем при использовании фильтра grok. Конфигурация должна выглядеть следующим образом:

kv { 
    source => "field" # That's the field I created in the grok filter containing the fields (ServiceName = CustomerService_v1,SystemDate = 8/16/16 10:35 AM...) 
    value_split => "=" 
    field_split => "," 
    trimkey => " " 
    trim => " " 
} 

Если вы предпочитаете не использовать Kv фильтр, вам придется заменить %{GREEDYDATA:fields} по: \s+ServiceName =%{GREEDYDATA:ServiceName},SystemDate =%{GREEDYDATA:SystemDate},...