インフラでいうログローテーションとは?初心者向けに仕組みや目的、設定の考え方をわかりやすく解説
結論
インフラでいうログローテーション(Log Rotation)とは、ログファイルが大きくなり過ぎないように、定期的または一定サイズごとに新しいログファイルへ切り替え、古いログを保存・削除する仕組みです。
ログローテーションを適切に設定することで、ディスク容量不足を防ぎ、必要なログを一定期間保存できます。
ログローテーションとは?
ログローテーションとは、アプリケーションやOSが出力するログファイルを定期的に切り替え、古いログを管理する運用方法です。
例えば、「app.log」というログファイルが毎日増え続ける場合、そのままでは数GBから数十GBになることがあります。ログローテーションを設定すると、毎日や毎週など決められたタイミングで「app.log」を「app.log.1」などの名前に変更し、新しい「app.log」を作成します。
つまり、「ログを定期的に整理し、保存期間や容量を管理する仕組み」がログローテーションです。
どんな場面で使われる?
ログローテーションは、ログを出力するほぼすべてのシステムで利用されています。
| 対象 | ログの例 |
|---|---|
| Linuxサーバー | syslog、messages、secure |
| Webサーバー | ApacheやNginxのアクセスログ・エラーログ |
| アプリケーション | アプリケーションログ |
| データベース | MySQLやPostgreSQLのログ |
| Windowsサーバー | アプリケーションが出力するテキストログ |
なぜ重要なのか
ログはシステムが稼働している限り増え続けます。
ログローテーションを設定していないと、ディスク容量を使い切り、アプリケーションが停止したり、OSが正常に動作しなくなったりする可能性があります。
また、古いログを整理することで、障害調査や監査で必要なログを探しやすくなるというメリットもあります。
ログローテーションの仕組み
- ログファイルが作成される
- 一定時間または一定サイズに達する
- 現在のログファイル名を変更する
- 新しいログファイルを作成する
- 古いログを圧縮・保存する
- 保存期間を過ぎたログを削除する
この処理は自動で実行されることが一般的です。
ログローテーションの方式
| 方式 | 特徴 |
|---|---|
| 日時で切り替える | 毎日・毎週・毎月など決まった日時で実施 |
| サイズで切り替える | 100MBや1GBなど一定容量で実施 |
| 世代管理 | 保存するログの世代数を指定する |
| 圧縮保存 | 古いログをZIPやgzipなどで圧縮する |
多くの環境では、「毎日ローテーション」「30日保存」「古いログは圧縮」といった設定が採用されています。
実際のIT現場での利用例
Linuxサーバー
Linuxでは、logrotateを利用してシステムログやWebサーバーのログを自動管理することが一般的です。
Webサーバー
ApacheやNginxでは、アクセスログやエラーログを毎日ローテーションし、一定期間保存します。
クラウド環境
AWS CloudWatch LogsやAzure Monitorでは、ログの保存期間(保持期間)を設定し、自動的に古いログを削除できます。
業務でよくあるトラブル例
ディスク容量がいっぱいになった
主な原因
- ログローテーションが設定されていない
- ローテーション処理が失敗している
- 保存期間が長すぎる
- 大量のログが短時間で出力されている
障害調査に必要なログが残っていない
主な原因
- 保存世代が少なすぎる
- 保存期間が短すぎる
- 誤って手動削除した
障害発生時の確認する順番
- ディスク容量を確認する
- ログファイルのサイズを確認する
- ログローテーション設定を確認する
- ローテーションが正常に実行されているか確認する
- 必要なログが残っているか確認する
- ログ出力元のサービスに異常がないか確認する
ログが急激に増えている場合は、アプリケーションの異常や繰り返し発生しているエラーが原因のこともあります。
GUIでの確認方法
Windows環境では、次のツールを利用できます。
- イベントビューアー
- エクスプローラーでログファイルを確認
- アプリケーションの管理画面
- 監視ツールのダッシュボード
LinuxではGUIを利用することもありますが、コマンドで確認することが一般的です。
CUI(コマンド)での確認方法
Linuxでは、次のようなコマンドがよく利用されます。
- logrotate -d(設定内容の確認)
- logrotate -f(強制実行)
- ls -lh(ログサイズ確認)
- du -sh(ディスク使用量確認)
- df -h(ディスク空き容量確認)
Windowsでは、PowerShellのGet-ChildItemやGet-Contentを利用してログファイルのサイズや内容を確認できます。
確認結果の見方
- ログファイルが適切に切り替わっているか
- 古いログが圧縮されているか
- 保存世代が設定どおりか
- ディスク容量に余裕があるか
- ローテーションエラーが発生していないか
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| ログ設定 | ローテーション設定に誤りはないか |
| ディスク | 空き容量は十分か |
| アプリケーション | 異常な量のログを出力していないか |
| OS | ローテーション処理が正常に実行されているか |
| 保存期間 | 要件に合った世代数・保存期間か |
初心者がやりがちなミス
- ログローテーションを設定しない
- ログを手動で削除してしまう
- 保存期間を短く設定し過ぎる
- ディスク容量を確認しない
- ログが大量に出力される原因を調査しない
上司へ報告するポイント
- ディスク使用率
- ログファイルの容量
- ローテーション実施状況
- 保存期間・保存世代
- 異常ログの有無
- 実施した対応
エスカレーションするタイミング
- ディスク容量が逼迫している
- ログローテーションが実行されない
- 必要なログが消失している
- 異常なログ出力が止まらない
- 原因が特定できない
応用知識
ログローテーションは、ログを削除することだけが目的ではありません。システムの監査やセキュリティ対策では、一定期間ログを保管することが求められる場合があります。そのため、保存期間や保存先は、運用ルールや法令、社内規程に合わせて設定することが重要です。また、近年ではログをサーバー内だけで管理するのではなく、SIEM(Security Information and Event Management)やクラウドのログ管理サービスへ転送し、一元管理するケースも増えています。
関連するIT用語
- ログ
- イベントログ
- アクセスログ
- エラーログ
- 監視
- ログ監視
- SIEM(Security Information and Event Management)
- CloudWatch Logs
- logrotate
よくある質問(FAQ)
ログローテーションとは簡単に言うと何ですか?
ログファイルが大きくなり過ぎないように、定期的に新しいログへ切り替え、古いログを保存・削除する仕組みです。
ログローテーションはなぜ必要ですか?
ディスク容量不足を防ぎ、障害調査や監査に必要なログを適切な期間保存するためです。
ログはすべて削除しても問題ありませんか?
いいえ。障害調査やセキュリティインシデントの調査で過去のログが必要になることがあります。保存期間や社内ルールを確認したうえで管理しましょう。
Windowsでもログローテーションはありますか?
Windowsのイベントログは最大サイズや保持方法を設定できます。また、アプリケーションが出力するテキストログについては、アプリケーション側やログ管理ツールでログローテーションを設定することが一般的です。
まとめ
ログローテーションとは、ログファイルを定期的または一定サイズごとに切り替え、古いログを適切に保存・削除する仕組みです。ディスク容量不足を防ぐだけでなく、障害調査や監査に必要なログを適切に管理するためにも重要な運用です。
また、「ログは残すだけでなく適切に管理することが重要」「保存期間や世代数は業務要件に合わせて設定する」「ログの急増はシステム障害の兆候である可能性もある」という点を理解しておくと、運用保守や社内SEの業務で役立ちます。定期的にログローテーションの設定やディスク容量を確認し、安定したシステム運用を目指しましょう。
