コンピューティング グリッド内の多数のサーバーからログを集約するために、Splunk に似たものを構築するために使用できる最適なコンポーネントを見つけようとしています。また、毎日大量のログがあり、単一のマシンにログを保存できないため、分散する必要があります。
私は特に、Ruby で動作し、Windows と最新の Solaris で動作するものに興味があります (ええ、私は動物園を持っています)。
私はアーキテクチャを次のように考えています。
- ログクローラー (Ruby スクリプト)。
- 分散ログ ストレージ。
- 分散検索エンジン。
- 軽量フロントエンド。
ログ クローラーと分散検索エンジンは問題外です。ログは Ruby スクリプトによって解析され、ElasticSearch はログ メッセージのインデックス作成に使用されます。フロントエンドもとても選びやすい - Sinatra。
私の主な問題は分散ログ ストレージです。MongoDB、CouchDB、HDFS、Cassandra、HBase について調べました。
- MongoDB は、Solaris で動作しないため拒否されました。
- CouchDB はシャーディングをサポートしていません (それを機能させるにはスマートプロキシが必要ですが、これは試したくありません)。
- Cassandra はうまく機能しますが、ディスク容量を大量に消費するだけであり、Cassandra ノード間で負荷を分散するために毎日オートバランスを実行する必要があります。
- HDFS は有望に見えましたが、FileSystem API は Java のみで、JRuby は苦労しました。
- HBase は最善のソリューションのように見えましたが、デプロイと監視は単なる災害です。HBase を開始するには、最初に HDFS を開始し、問題なく開始されたことを確認し、次に HBase を開始してそれも確認し、REST サービスを開始して、も確認してください。
だから私は立ち往生しています。HDFS または HBase がログ ストレージとして使用するのに最適であると言う人もいますが、HDFS は Java でのみスムーズに動作し、HBase は展開/監視の悪夢に過ぎません。
上記のコンポーネントを使用して、またはまったく異なるものを使用して同様のシステムを構築した経験や考えを共有できる人はいますか?