私のアプリはAmazon EC2クラスターでホストされています。各インスタンスはイベントをログファイルに書き込みます。毎日の終わりにこれらのログを収集(およびデータマイニング)する必要があります。これらのログを中央の場所に収集するための推奨される方法は何ですか?私はいくつかのオプションを考えましたが、どちらに行くべきかわかりません:
各ホスト(Puppetを介して展開)で Logstash を使用して、ログイベントを収集し、中央のホストのメッセージキュー(RabbitMQ、Redisの場合もあります)に送信します。別のLogstashインスタンスがイベントを取得して処理し、結果を ElasticSearch に詰め込みます。 Kibana Webインターフェイスを使用して、このデータベースを検索します。
それは非常に能力があり、簡単に拡張でき、非常に柔軟です。 Logstashには、さまざまな入力からのイベントを処理するための大量のフィルターがあり、ElasticSearchもその1つである多くのサービスに出力できます。現在、EC2インスタンスから1日あたり約120万件のログイベントを軽量ハードウェアで出荷しています。イベントから検索可能までのログイベントのレイテンシは、セットアップでは約1秒です。
この種のセットアップに関するドキュメントは次のとおりです: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html 、およびKibanaのデモいくつかのライブデータを備えた検索インターフェース。
この質問は現在(2014年12月)古くなっていますが、このトピックに関するGoogle検索では依然として上位にランクされています。
Amazonは現在、CloudWatchを通じてこれを行う方法を提供しています。ログメッセージをパターンマッチングし、アプリケーションで発生していることに基づいてアラームをトリガーする機能があります。実行する必要があるデータマイニングの性質によっては、APIを使用して目的の集約イベントをフェッチできる場合があります。参照 http://aws.Amazon.com/blogs/aws/cloudwatch-log-service/
私はLogglyを使用していて、それはトリックを行うようです
Tcpを介してすべてのログをサービスに送信し、すべてのログファイルを監視する中心的な場所があります。
また、ログファイルをS3にアーカイブすることもできます。
私はこの目的で試したことはありませんが、AmazonはSimpleDBの使用を推奨しているようです。
http://aws.Amazon.com/simpledb/usecases_logging/
以下は、便利だと思われるパッケージです。これを使用して、stdout/stderrをSimpleDBにキャプチャできます。
Splunk の無料バージョンをご覧ください。リモートログファイルのコレクションを処理し、非常に優れた検索および分析ツールを提供します。
ログメッセージをTCP経由で転送する一般的なツールであるsyslog-ngを使用します。オプションで暗号化されています。
まだ実装していませんが、Facebook Scribeに出会いました。 https://github.com/facebookarchive/scribe
私がそうなるまで、私はあなたが#1について言及したことだけをしてきました-私はsftpを使用してファイルをプルするcronジョブを持っています。 #2を実行しても、ec2マシンがクラッシュするインスタンスがあり、とにかくログファイルをプルオフする必要があったため、これを選択しました。