
【Linux】ログのローテーション
システムの安定性とパフォーマンスを維持するために、ログ管理は不可欠です。ログファイルは、システムの動作状況を把握し、トラブルシューティングを行うための重要な情報源ですが、無制限に増加するログファイルはディスク容量を圧迫し、システム全体のパフォーマンスを低下させる可能性があります。特に、/var/log/messagesのようなシステムログファイルは、rsyslogから継続的にメッセージが追加されるため、適切な管理が必要です。

そこで役立つのが「ログのローテーション」機能です。ログのローテーションは、一定の条件に基づいて古いログファイルを新しいログファイルに置き換え、古いログファイルを削除することで、ディスク容量の圧迫を防ぎ、ログファイルを効率的に管理する方法です。このプロセスは、logrotateコマンドによって自動的に管理され、通常はcronによって定期的に実行されます。
/var/log/messagesファイルには、rsyslogからメッセージが送られ続け、ログがどんどん追記されていきます。いずれファイルサイズが大きくなり、ディスク容量を圧迫してしまいます。これを防ぐための機能がログのローテーション機能です。
ログローテーション機能の動作
ログのローテーション機能は、以下のように動作します。ログのファイル名は「messages」です。
| ステージ | 説明 |
|---|---|
| ローテーション前 | ログが継続的に追記される。 |
| ローテーション1回目 | messages が messages.1 になり、 新しい messages ファイルが作成される。 |
| ローテーション2回目 | messages.1 が messages.2 になり、 messages が messages.1 になり、 新しい messages ファイルが作成される。 |
| ローテーション3回目 | messages.2 が messages.3 になり、 messages.1 が messages.2 になり、 messages が messages.1 になり、 新しい messages ファイルが作成される。 |

保持しておくファイル数が規定値を超えると、古いファイルから順に削除されます。ログのローテーション機能は、logrotateコマンドが実行されることで動作します。
logrotateコマンド
logrotateコマンドは、ログファイルのローテーションを管理するためのツールです。デフォルトで、cronにより1日に1回実行される設定になっています。
/etc/cron.dailyの確認
logrotateがcronにより毎日実行されることを確認するには、以下のコマンドを使用します。
user01@ubuntu-vm:~$ ls /etc/cron.daily
0anacron apt-compat dpkg man-db
apport cracklib-runtime logrotate plocateこのコマンドを実行すると、logrotateがリストに表示されます。
まとめ
ログのローテーション機能は、ログファイルがディスク容量を圧迫するのを防ぐための重要な機能です。logrotateコマンドを使用して、定期的にログファイルをローテーションし、古いログファイルを削除することで、システムのディスク容量を効率的に管理できます。/etc/cron.dailyの設定により、logrotateはデフォルトで1日に1回実行されるため、ログファイルの管理が自動的に行われます。
これにより、最新のログを含む新しいmessagesファイルが作成され、古いログファイルは番号が増えていきます。規定の保持数を超えた古いファイルは削除されます。
