web-dev-qa-db-ja.com

サイトの統計のログを収集する方法は?

統計処理のために、nginx(複数のサーバー、すべてのサーバーで1分間に1 000 000行のログ)から中央統計サーバーにログを収集したいと思います。私は2つの変種を見ます:

    1. 各サーバーのローカルログファイルにログを書き込む
    2. たとえば、各サーバーのテンプレート「DD.MM.YYYY HH」のログの名前を変更し、ログをssh経由でstatサーバーに送信します。
    3. 各サーバーのnginxにリロードログのシグナルを送信します
    1. 統計サーバーにログを送信するには、syslogトランスポート(またはその他-テンプレート "DD.MM.YYYY HH"のファイルの名前を自動変更する可能性のあるトランスポート)を使用します。
    2. すべてのサーバーからログを書き込むために、statサーバーのメモリ内のhadoopまたは一時ディレクトリを使用します(この場合、どのバリアントがより生産的ですか?)
  1. 他に何か提案できますか?

2
Bdfy

elasticsearch + logstash + kibanaを見てください

Logstashは、ログファイルを解析し、フィルターを使用してログファイルから情報を抽出できます。それらをElasticsearchに保存でき、Kibana経由でクエリできます。彼らのサイトのビデオを見て、何ができるかを感じてください。

2
Andrei Nistor

最初のオプションはloghost経由で実行できます(基本的にはオプション2)。syslogメッセージをudp経由で$ logserverに送信できます。次に、サーバーに基づいてログを分割し、送信したログの「正確な」タイムスタンプを取得します。

とにかくその量のログで必要になる可能性が最も高い通常のlogrotateを除いて、nginxサーバーではログの名前を変更する必要はありません。

ツールがすでに利用可能である場合は、スクリプトを書きすぎないことが最善です。ここで車輪の再発明を行う必要はありません。

オプション2は、達成したいものにかなり近いはずです。

サーバーが存在するネットワークのセキュリティに応じて、「通常の」syslog手順を介して直接転送するか、f.e。ログホストへのVPN接続。

0
Dennis Nolte