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

Самый эффективный способ передать логи веб-маяков в Apache Flume?

Установка

Я установил простой сервер Nginx, который ведет журнал (в формате JSON), который затем передается в корзину S3 с помощью Apache Flume. Все, что делает сервер Nginx, это отвечает пикселем отслеживания веб-маяков и записывает в файл журнала. Пока все круто.

Эта проблема

Однако было бы неплохо обработать еще пару этапов обработки на этом уровне конвейера:

  1. Преобразование параметров строки запроса в фактический JSON в записях событий
  2. Установите файл cookie UUID для отслеживания
  3. Увеличьте некоторые счетчики в локальной базе данных (в конечном итоге все данные будут обрабатываться с помощью Map / Reduce)

Похоже, мне понадобится настраиваемый приемник Flume для преобразования параметров строки запроса и серверная часть в nginx для установки файла cookie и обновления базы данных. Использование нескольких систем здесь кажется очень неэффективным, особенно при оптимизации пропускной способности для сотен запросов в секунду.

Возможные решения

Моей первой мыслью было использовать NodeJS, который мог бы справиться со всеми этими задачами (и даже заменить nginx?), Но мне не нравится, что он однопоточный (может быть, порождать дочерние рабочие?).

Затем я подумал, что, возможно, обработка должна происходить на уровне агента Flume, и программа Java могла бы справиться со всем (какое-либо преимущество в производительности здесь из-за того, что Flume написан на Java?)

Вопросы

  1. Я иду по этому поводу правильно или слишком много думаю об этом?
  2. Как бы вы рекомендовали объединить все в один или два процесса?