web-dev-qa-db-ja.com

Apacheでのlogrotateとrotatelogsの長所と短所は何ですか?

Apacheはrotatelogsと呼ばれるツールを提供します。これは、logrotateで発生するログをローテーションするときにApacheを再起動しないという利点があります。これがlogrotateよりもrotatelogsを使用するのに十分な基準であるかどうかを話すのに十分な経験がありません。

私の質問は、これらの2つのツールのいずれかを使用して実際の経験を持っている人はいますか、そしてあなたの意見は何でしたか?

あなたは何を勧めますか、そしてその理由は何ですか?

11
Mohan Gulati

他のすべてのログをローテーションすることになるので、ほとんどの人にはlogrotateをお勧めします(KISS:Keep it Simple Stupid)。 Logrotateは、すべてのApacheを再起動するのではなく、すべてのログファイルを再度開いて子を再起動するように指示する信号を送信するだけです。この信号は、子がすぐに再起動する(ダウンロードを中断する)SIGHUPか、正常な再起動を行うSIGUSR1のいずれかです。 SIGUSR1では、すべての子が自然に死んだと思うまで、ログ処理を遅らせる必要があります。どちらの方法でも、ログを分析して、日または週で最もトラフィックの少ない期間の時間を計る必要があります。

パイプログは、より強力なソリューションのようです。大きな利点は、集中ログシステムを使用して、Webサーバー自体の負荷を軽減できることです。マニュアル自体は言う:

条件付きロギングと同様に、パイプされたログは非常に強力なツールですが、オフラインの後処理などのより単純なソリューションが利用可能な場合は使用しないでください。

したがって、明らかにneedでない場合は、パイプによるロギングを使用しないでください。私は過去にログをフィルタリングするためのハッキーな方法としてパイプロギングを使用しており、問題はありませんでした。

7
Kyle Brandt

以前に両方を使用したことがあります。 rotatelogsの使用は、アクセスログの管理や、Apacheのダウンタイムが必要ない場合に非常に便利なツールであることがわかりました。大量のサイトでこれをお勧めします。唯一の問題は、ログを管理したい場合、ログをクリーンアップするか、バックアップサーバーに移動するために別のスクリプトcronが必要になることです。要件によって異なります。 logrotateを使用すると、ログファイルの処理方法に関するオプションが増えます。唯一の問題は、前の回答で説明したようにlogrotateが実行された場合、Apacheを再起動する必要があります。

基本的に、すべてを選択することができます。Apacheを中断せずに実行する必要がある場合は、外部cronスクリプトを使用してrotatelogsを管理します。それ以外の場合は、logrotateで十分です。トラフィックが多いときにログをローテーションしないようにlogrotate cronを設定してください。

最後に、Apacheのログをsyslogに保存したい場合は、RedhatベースのLinuxにあるloggerコマンドをいつでも使用できます。

2
Danie