У нас есть установка, в которой программа регистрируется в файле .Json в формате, соответствующем спецификации GELF.
В настоящее время это отправляется на сервер Graylog2 с использованием HTTP. Это работает, но из-за природы HTTP возникает значительная задержка, что является проблемой при наличии большого количества сообщений журнала.
Я хочу изменить метод доставки HTTP на UDP, чтобы просто "запустить и забыть".
Журналы записываются в файлы следующим образом:
{ "short_message": "<message>", "host": "<host>", "full_message": "<message>", "_extraField1": "<value>", "_extraField2": "<value>", "_extraField3": "<value>" }
Текущая конфигурация такова:
<Extension json>
Module xm_json
</Extension>
<Input jsonLogs>
Module im_file
File '<File Location>'
PollInterval 5
SavePos True
ReadFromLast True
Recursive False
RenameCheck False
CloseWhenIdle True
</Input>
<Output udp>
Module om_udp
Host <IP>
Port <Port>
OutputType GELF_UDP
</Output>
При такой настройке часть сообщения журнала json добавляется в поле «сообщение» сообщения GELF и отправляется на сервер.
Я попытался добавить строку `Exec parse_json(), но это просто приведет к исключению всех полей, кроме short_message и full_message.
Я не уверен, как правильно настроить это. Предпочтительно даже просто добавить полное сообщение журнала в поле, поскольку я могу добавить экстрактор на стороне сервера.