私は何年もログローテーションを使ってきましたが、stackoverflowで質問に出会うまで、それが問題になるとは思っていませんでした(https://stackoverflow.com/questions/1508734/disable-java-log-rotation/) では、ログのローテーションを無効にしたい場合があります。
ログがローテーションされず、ディスクが不足し、突然マシンが停止したためにビルド サーバーや実稼働サーバーを手動でクリーンアップした経験のある私には、すべてが狂っているように思えますが、結局のところ、それほど明白ではないのかもしれないと思いました。
では、ログローテーションの利点は何でしょうか? また、欠点は何でしょうか (たとえば、デバッグや分析が難しくなるなど)? ローテーションされたログ ファイルの操作に役立つツールは何でしょうか? Splunk だと思いますが、他には何がありますか?
答え1
ログローテーションの利点は明らかだと思います。
- 1 つの巨大なログ ファイルの代わりに、簡単に管理できる小さなログ ファイルを取得できます。
- 容量制限に応じて適切に設定すれば、突然ディスク容量が不足することはありません。(
size
オプション) - 古いログ ファイルを圧縮してログ ファイルのサイズをさらに小さくし、ディスク領域をさらに節約することができます (
compress
オプション)。 - 特定の方法/時間でファイルをローテーションできます。たとえば、各ログ ファイルには特定の日付に関連する情報のみが含まれます。日付がわかっている場合は、検索が容易になります。日付がわからない場合は、すべてのファイルまたはそのサブセットを検索できます。(
daily
、monthly
など)。 - 非常に古いファイルは自動的に削除されます。たとえば、最大 30 個のファイルを保持できます (
rotate 30
)。 - ローテーション日などお好みの拡張子を追加できます。(
dateext
)。 - 回転前/回転後に特定のスクリプトを実行できます。(
prerotate
、postrotate
)。
編集:リストに項目を追加し、該当する場合はオプションも含めました。詳細については、man logrotate
を参照してください。
答え2
利点:
- ログファイルが大きい場合は、ディスクがいっぱいにならないように古いデータを圧縮または削除することができます。
- 何かがいつ起こったかがわかっていれば、1つの永続的なログファイルよりも1日のログファイルをgrepする方が速くなります。
欠点:
- 履歴全体を処理したい場合は、複数のファイル名を指定する必要があります。
- 一部のプログラムは回転をサポートしておらず、logrotate などのユーティリティを使用して回転させる場合は、注意すべきエッジ ケースがいくつかあります (たとえば、切り捨てオプションを使用する必要がありますが、これは少量のデータが失われるリスクがあることを意味します)。
答え3
ログを何に使うかを考えれば、そのメリットはさらに明らかになります。他の人やあなた自身が述べた明白な点はさておき、私にとっての大きなメリットは、ログをオフライン分析ツールに取り込む方法を制御できることです。
私はログの分析に使用する自家製スクリプトをいくつか持っていますが、私の知る限り、Splunk とさまざまな Weblogog 分析ツールが、すぐに使用できる唯一の「標準」ツールです (fail2ban のようなリアルタイム ログ ファイル アナライザーは除きます)。