Я пытаюсь найти лучшие компоненты, которые я мог бы использовать для создания чего-то похожего на 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 - это просто кошмар развертывания / мониторинга.
Может кто-нибудь поделиться своими мыслями или опытом создания подобных систем с использованием компонентов, которые я описал выше, или с чем-то совершенно другим?