分散ログアグリゲーター(Splunkなど)を構築するのに最適なコンポーネントスタックは何ですか?
質問
コンピューティンググリッドの多数のサーバーからログを集約するために、Splunkに似たものを構築するために使用できる最高のコンポーネントを見つけようとしています。また、毎日ログのギグがあり、単一のマシンがログを保存できないため、配布する必要があります。
Rubyで動作し、Windowsと最新のSolarisで動作するものに特に興味があります(ええ、動物園を手に入れました)。
アーキテクチャは次のとおりです。
- Log Crawler(Ruby Script)。
- 分散ログストレージ。
- 分散検索エンジン。
- 軽量のフロントエンド。
ログクローラーと分散検索エンジンは質問から外れています - ログはRubyスクリプトによって解析され、Elasticsearchはログメッセージのインデックスを作成するために使用されます。フロントエンドも非常に簡単に選択できます - シナトラ。
私の主な問題は、分散ログストレージです。 Mongodb、CouchDB、HDFS、Cassandra、Hbaseを見ました。
- MongodbはSolarisで機能しないため拒否されました。
- CouchDBはシャーディングをサポートしていません(SmartProxyは機能させるには必要ですが、これは試してみたくないものです)。
- Cassandraはうまく機能しますが、それは単なるディスクスペースの豚であり、Cassandraノード間に負荷を広めるために毎日オートバランスを実行する必要があります。
- HDFSは有望に見えましたが、ファイルシステムAPIはJavaのみであり、Jrubyは痛みでした。
- hbaseは周りに最適なソリューションのように見えましたが、それを展開して監視を展開するのは単なる災害です。hbaseを開始するには、最初にHDFSを起動し、問題なく開始し、HBaseを起動して確認してから、休憩サービスを開始して開始する必要があります。またチェックしてください。
だから私は立ち往生しています。 HDFSまたはHBaseはログストレージとして使用するのに最適なものであることがわかりますが、HDFSはJavaとHBaseでのみスムーズに動作し、Nightmareの展開/監視です。
上記のコンポーネントを使用して、またはまったく違うものを使用して、その考えや同様のシステムの構築を経験する人はいますか?
解決
使用することをお勧めします 水路 データをに集約します hbase. 。使用することもできます 弾性検索シンク Flumeが検索インデックスをリアルタイムで最新の状態に保つために。
詳細については、参照してください Quoraに関する同様の質問に対する私の答え.
他のヒント
JavaとHDFSに関しては、Beanshellなどのツールを使用して、JavaScriptを介してHDFSストアと対話できます。