У меня есть приложение rails, и я пытаюсь настроить ведение журнала в graylog.Конвейер состоит из следующих шагов: 1) Журналы записываются в файл в формате JSON с помощью гема SemanticLogger.Сообщение журнала состоит из информации заголовка (теги первого уровня) и полезной нагрузки с несколькими уровнями иерархии:
{
"tag": "mortgage",
"app": "sneakers",
"pid": 3448,
"env": "production",
"host": "thesaurus-mortgage",
"thread": "91090300",
"level": "info",
"name": "Sneakers",
"payload": {
"class": "EgrnListenerWorker",
"method": "work",
"json": {
"resource": "kontur",
"action": "request_egrn_done",
"system_code": "thesaurus",
"id": 35883717,
"project_id": "mortgage",
"bank_id": "ab",
"params": {
"egrn": {
"zip": "rosreestr/kontur/kontur_4288_2018-10-11_021848.zip",
"pdf": "rosreestr/kontur/kontur_4288_2018-10-11_021848.pdf",
"xml": "rosreestr/kontur/kontur_4288_2018-10-11_021848.xml"
},
"code": "SUCCESS"
}
},
"valid_json": true
},
"created_at": "2018-10-11T17:44:58.262+00:00"
}
2) Файл читается службой Filebeat и отправляется в Graylog.
И Graylogне удалось правильно проанализировать содержимое полезной нагрузки:
Как видите, ключи объединяются с ":" в одной строке следующим образом: key1 = value1: key2 = значение2.Это не то, что я ожидаю.Было бы идеально, если бы я мог управлять серым журналом для анализа содержимого полезной нагрузки в различные поля с именами payload.key1, payload.key2 и т. Д. (Чтобы я мог выполнять поиск по этим полям)
ps: мои данные журналаявляется неоднородным, то есть содержимое полезной нагрузки зависит от функциональности, которой оно было создано, поэтому я ожидаю, что будет огромное количество различных полей типа "payload.xxxxx" - это нормально?