Назад | Перейти на главную страницу

Как обрабатывать, преобразовывать и повторно отправлять записи журнала 1000 запросов / сек из syslogd?

В настоящее время у меня есть две машины, которые получают около 1000 запросов HTTP / сек и генерируют запись в журнале по каждому запросу. Этот журнал централизован на демоне syslog, запущенном на другом компьютере.

По причинам, не имеющим отношения к делу, мне нужно будет отправить эти журналы на внутренний сервер pub / sub (каждая запись журнала будет полезной нагрузкой JSON, отправленной через UDP) для дальнейшей обработки в [почти] реальном времени.

Я думал о том, чтобы сохранить все до демона syslog, потому что мне все еще нужны эти журналы централизованно, но мне было интересно, как я могу перенести их оттуда на сервер pub / sub. Несколько вещей, которые сейчас приходят мне в голову, не особенно хороши:

Я бы хотел услышать более опытных людей, у которых могла быть похожая проблема. В идеале syslogd будет получать журналы с разных машин, выполнять необходимые преобразования в JSON, отправлять их через UPD, а затем также записывать их локально в централизованный файл журнала. Все очень спорно и открыт для обсуждения, так как там могут быть и другие решения, я никогда даже не слышал.

Здесь нет никаких требований к производительности (1000 запросов / сек - это действительно небольшой масштаб). Единственное реальное требование здесь - это то, что он должен быть как можно ближе к реальному времени (задержка около 10 секунд или что-то еще приемлемо).

syslog-ng - это (IMHO) правильный способ сделать это. Получив сообщение, отправьте его в сценарий Perl, используя пункт назначения program () в syslog-ng. Если вы хотите выполнить поиск и диаграмму / график после его анализа, попробуйте такой инструмент, как LogZilla это будет работать в соответствии с тем, что вы пытаетесь сделать. Perl может без особой работы обрабатывать до 35 тысяч событий в секунду, так что у вас все хорошо. Проверьте Вот для обзорной картины того, как это делается в LZ (который также использует место назначения программы Perl).