
時々ログをクリアする以外に、ログ管理は行っていません。トラフィックがそれほど多くないサーバーがあります (ほとんどのログはライブ チャットからのものです)。しかし、ログを適切に管理するには、どのようなログ管理手順を実施すればよいのか疑問に思いました。特定のものだけがログに記録されるように設定したり、ログを何日か消去するように設定したりしていますか? アクセス ログはどのくらいの期間保存する必要がありますか? その他のログはどのくらいの期間保存する必要がありますか?
答え1
私のログファイルもそのせいで大きくなります。私は、ほぼすべての Linux ディストリビューションで利用できる標準の logrotate を使用しています。
大きすぎるものは毎日、その他は毎週、といったようにログローテーションするように設定しました。
ぜひお試しください。xz で圧縮しているので、ファイルは比較的小さく、どちらの側でも帯域幅をあまり失うことなく、個人用のボックスにダウンロードして調べることができます。
詳細については、man logrotate および man logrotate.conf を参照してください。
答え2
まず、Web サーバーが access.log に追加されることを理解してください。そのため、ログのサイズは最小限に抑える必要があります。私の Apache サーバーでは、ログ ファイルが 4 GB を超えるとページの読み込みが遅くなります (おそらく、これに気付いているのは私だけでしょう)。
awstats を試してみてください。トラフィックの詳細な表示を可能にする HTML ベースのファイルが作成され、巨大な access.log ファイルが消去されます。このアプリケーションを初めて実行すると、access.log が非常に大きいため、非常に長い時間がかかります。
awstats または logrotate が役に立たない場合は、cron を使用して access.log を 1 日に 1 回削除することもできます。
echo "" > access.log
しかし、個人的には、非常に高速に切り捨てる必要がある巨大なログ ファイルがある場合にのみこれを使用します。このように切り捨てるのは、ログの無駄遣いです。
答え3
使用クロノログ時間別ログ ファイルまたは日別ログ ファイルを作成します。使用方法をご覧ください。
TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
ErrorLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"
cronjob を使用して上記のログを圧縮し、ディスクがいっぱいになるのを防ぎ、データを数日間 (1 か月前のものでも可) 保持します。
または、logrotateを使用してログをローテーションします(上記の回答で説明したとおり)