Назначения переменных влияют на текущий запущенный shell

это непростой вопрос. Проблема в том, что есть объекты JSON, смешанные с полями с обычным текстом. Я думаю, у вас есть следующие варианты (обратите внимание, что вам понадобится последняя версия syslog-ng для использования парсеров json и kv, я бы выбрал версию 3.8):

  • Если можете, настройте mongodb для входа в чистый json и проанализируйте его с помощью json-parser syslog-ng. (Не знаю, может ли mongodb это сделать.)

  • Вы можете создать базу данных шаблонов , чтобы охватить отдельные сообщения, но это может занять много времени

  • Но наиболее вероятным вариантом будет для использования комбинации синтаксических анализаторов syslog-ng . А именно, попробуйте следующее:

    • используйте csv-parser , чтобы разделить сообщение на два столбца в первом символе {
    • , проанализируйте первый столбец с помощью парсера значения ключа (двоеточие - это разделитель в этой части сообщения)
    • используйте json-parser для анализа второй части сообщения (поскольку некоторые сообщения содержат несколько частей json, вам, возможно, придется добавить сюда еще одну комбинацию csv + json) Эти парсеры будут создавать пары имя-значение проанализированных значений, и вы можете использовать шаблон или функцию шаблона для вывода их по мере необходимости (например, с помощью функции шаблона format-welf).
  • Или теперь, когда я думаю об этом, если вам не нужна структура JSON (только плоские имена + значения), вы можете попробовать просто использовать правило перезаписи, чтобы удалить символы {} из сообщений, и использовать парсер "ключ-значение".

  • Если вышеуказанная опция не работает, вы можете написать собственный синтаксический анализатор на Python и обрабатывать сообщения там.

HTH.

Пожалуйста, дайте мне знать, если вам это удастся.

8
25.12.2015, 03:08
0 ответов

Теги

Похожие вопросы