Каков наилучший стек компонентов для построения распределенного агрегатора журналов (например, Splunk)? - PullRequest
0 голосов
/ 22 июня 2010

Я пытаюсь найти лучшие компоненты, которые я мог бы использовать для создания чего-то похожего на Splunk, чтобы собирать журналы с большого количества серверов в вычислительной сетке. Кроме того, его следует распространять, потому что у меня есть ежедневные выступления журналов, и ни одна машина не сможет хранить журналы.

Меня особенно интересует то, что будет работать с Ruby и работать на Windows и последней версии Solaris (да, у меня есть зоопарк).

Я вижу архитектуру как:

  • Искатель журналов (скрипт Ruby).
  • Распределенное хранилище журналов.
  • Распределенная поисковая система.
  • Легкая передняя часть.

Искатель логов и распределенная поисковая система не подлежат обсуждению - логи будут анализироваться скриптом Ruby, а ElasticSearch будет использоваться для индексации сообщений логов. Передний конец также очень легко выбрать - Синатра.

Моя основная проблема - распределенное хранение журналов. Я посмотрел на MongoDB, CouchDB, HDFS, Cassandra и HBase.

  • MongoDB был отклонен, поскольку он не работает на Solaris.
  • CouchDB не поддерживает шардинг (для его работы требуется smartproxy, но я не хочу даже этого пытаться).
  • Cassandra прекрасно работает, но это всего лишь место на диске и требует ежедневного автоматического балансирования, чтобы распределить нагрузку между узлами Cassandra.
  • HDFS выглядела многообещающе, но API-интерфейс FileSystem - только Java, и JRuby был проблемой.
  • HBase выглядел как лучшее решение, но его развертывание и мониторинг - это просто катастрофа. Чтобы запустить HBase, мне нужно сначала запустить HDFS, убедиться, что он запустился без проблем, затем запустить HBase и проверить его, а затем запустить Служба ОТДЫХА, а также проверить его.

Так что я застрял. Что-то подсказывает мне, что HDFS или HBase лучше всего использовать в качестве хранилища журналов, но HDFS работает без сбоев только с Java, а HBase - это просто кошмар развертывания / мониторинга.

Может кто-нибудь поделиться своими мыслями или опытом создания подобных систем с использованием компонентов, которые я описал выше, или с чем-то совершенно другим?

Ответы [ 2 ]

2 голосов
/ 15 октября 2010

Я бы рекомендовал использовать Flume для объединения ваших данных в HBase .Вы также можете использовать Elastic Search Sink для Flume, чтобы обновлять индекс поиска в реальном времени.

Подробнее см. мой ответ на аналогичный вопрос по Quora .

0 голосов
/ 22 июня 2010

Что касается Java и HDFS - используя такой инструмент, как BeanShell, вы можете взаимодействовать с хранилищем HDFS через Javascript.

...