2016-01-16 4 views
0

У меня есть собственный формат журнала, я новичок в нем, поэтому пытаюсь выяснить, как это работает. Он не обрабатывается в logstash. Может кто-то поможет определить проблему.Ошибка Groz Parse в пользовательском формате журнала и регулярном выражении в logstash

LogFormat выглядит следующим образом

{u'key_id': u'1sdfasdfvaa/sd456dfdffas/zasder==', u'type': u'AUDIO'}, {u'key_id': u'iu-dsfaz+ka/q1sdfQ==', u'type': u'HD'}], u'model': u'Level1', u'license_metadata': {u'license_type': u'STREAMING THE SET', u'request_type': u'NEW', u'content_id': u'AAAA='}, u'message_type': u'LICENSE', u'cert_serial_number': u'AAAASSSSEERRTTYUUIIOOOasa='} 

Мне нужно, чтобы он разбирается в logstash, а затем сохранить его в elasticsearch

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

+0

Вы видели JSon кодека или фильтр? –

+0

Нет, я не использовал json codec .. Я только узнал, когда вы это упомянули. Я обязательно попробую. – userguy

ответ

0

Комментарий Alain может быть вам полезен, если этот журнал, по сути, входит в JSON, вы можете посмотреть на JSON Filter, чтобы автоматически разобрать сообщение JSON в упругой дружественной форме t или используя JSON Codec на вашем входе.

Если вы хотите придерживаться grok, отличный ресурс для создания пользовательских шаблонов grok - Grok Constructor.

+0

Я попробую это и обновит вас .. на данный момент я использовал отладчик grok и с существующим отладчиком grok попытался разобрать его. Попробует использовать JSON и будет держать вас в курсе – userguy

0

Кажется, что вы сбрасываете хэш json из python 2.x в файл журнала, а затем пытаетесь его проанализировать из логсташа.

Первый - Исправить ваш json-формат и кодировку: Ваш файл не дал соответствующих строк json. Моя рекомендация состоит в том, чтобы установить его на ваше приложение, прежде чем пытаться потреблять данные из Logstash, если вы не будете иметь, чтобы сделать использование некоторых приемов, чтобы сделать его оттуда:

# Disable accii default charset and encode to UTF-8 
js_string = json.dumps(u"someCharactersHere", ensure_ascii=False).encode('utf8') 

# validate that your new string is correct 
print js_string 

Второй - Используйте Logstash JSON фильтр

Модуль Grok предназначен для анализа любого текста с использованием регулярных выражений. Каждое выражение преобразуется в переменную, и эта переменная может быть преобразована в поля событий. Вы могли бы это сделать, но это будет намного сложнее и обрезать ошибки.

Ваш вход имеет формат уже (json), поэтому вы можете использовать Logstash JSON Filter. Он будет делать всю тяжелую работу за вас путем преобразования структуры JSon в поле:

filter { 
    json { 
    # this is your default input. you shouldn't need to touch it 
    source => "message" 

    # you can map the result into a variable. Simply uncomment the 
    # following: 
    # target => "doc" 


    # note: if you don't use the target option. the filter will try to 
    # map the json string into fields into the 'root' of your event 
    } 
} 

Надеется, что это помогает,

+0

Я попробую это и обновит вас .. на данный момент я использовал отладчик grok и с существующим отладчиком grok попытался разобрать его. Попробует использовать JSON и будет держать вас в курсе и согласно вашему предложению я проверю с поставщиком приложения, если они могут изменить как они отправляют журналы – userguy

+0

Perfect !. Пожалуйста, дайте мне знать о любом прогрессе в вашей проблеме. – alfredocambera

+0

каких-либо результатов на эту тему? – alfredocambera

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

  • Нет связанных вопросов^_^