Как я могу управлять Graylog, чтобы правильно анализировать мои журналы JSON? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть приложение 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не удалось правильно проанализировать содержимое полезной нагрузки:

enter image description here

Как видите, ключи объединяются с ":" в одной строке следующим образом: key1 = value1: key2 = значение2.Это не то, что я ожидаю.Было бы идеально, если бы я мог управлять серым журналом для анализа содержимого полезной нагрузки в различные поля с именами payload.key1, payload.key2 и т. Д. (Чтобы я мог выполнять поиск по этим полям)

ps: мои данные журналаявляется неоднородным, то есть содержимое полезной нагрузки зависит от функциональности, которой оно было создано, поэтому я ожидаю, что будет огромное количество различных полей типа "payload.xxxxx" - это нормально?

1 Ответ

0 голосов
/ 23 октября 2018

Это не совсем вопрос filebeat, так как filebeat отправляет журналы только в их исходном формате JSON (в архиве, если требуется).

С веб-сайта Graylog: http://docs.graylog.org/en/2.4/pages/extractors.html

Использование экстрактора JSON Начиная с версии 1.2, Graylog также поддерживает извлечение данных из сообщений, отправленных в формате JSON.

ИспользованиеJSON-экстрактор прост: как только вход Graylog получает сообщения в формате JSON, вы можете создать экстрактор, перейдя в System -> Inputs и нажав кнопку Manage Extractors для этого ввода.Затем вам нужно загрузить сообщение для извлечения данных и выбрать поле, содержащее документ JSON.На следующей странице вы можете добавить дополнительную информацию, чтобы сообщить Graylog, как она должна извлекать информацию.

Это должно помочь вам.

...