Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

ログローテーション(ログローテーション)とは | 意味や読み方など丁寧でわかりやすい用語解説

ログローテーション(ログローテーション)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ログローテーション (ログローテーション)

英語表記

log rotation (ログローテーション)

用語解説

ログローテーションとは、システムが生成するログファイルが過度に肥大化するのを防ぎ、効率的に管理するための仕組みである。システムは日々の稼働の中で、発生したイベントや処理内容、エラー情報などを記録として残す。これらがログファイルとして蓄積されるのだが、その量はシステムの種類や負荷によって膨大になる場合がある。ログローテーションは、このようなログファイルを一定のルールに基づき、新しいファイルに切り替えたり、古いファイルを圧縮したり、あるいは完全に削除したりすることで、ディスク容量の圧迫を防ぎ、システムの安定稼働を維持することを目的としている。

システムは、サーバー、アプリケーション、ネットワーク機器など、その種類を問わず、稼働している間は常に様々な情報をログとして記録している。これらのログは、システムの正常性を監視したり、障害が発生した際の原因究明やトラブルシューティングを行ったり、セキュリティ上の脅威を分析したりするために不可欠な情報源となる。たとえば、Webサーバーであればアクセス履歴を、データベースサーバーであればSQLクエリの実行履歴を、アプリケーションであればエラーや警告の発生状況を記録する。これらのログは、システムが活発に利用されるほど、そして記録のレベルが詳細に設定されるほど、そのサイズが加速度的に増大していく。

ログファイルが際限なく増え続けると、いくつかの深刻な問題を引き起こす可能性がある。最も直接的な問題は、ログファイルが保存されているディスクの容量を圧迫することである。ディスク容量が不足すると、新しいログを書き込めなくなるだけでなく、システム全体の動作に支障をきたし、最悪の場合、サービスが停止してしまう恐れがある。また、巨大なログファイルは、その中から特定の情報を検索したり、解析ツールで処理したりする際のパフォーマンスを著しく低下させる。必要な情報を見つけ出すまでに時間がかかり、障害発生時の復旧作業を遅らせる要因にもなりかねない。さらに、長期間にわたる大量のログを保持することは、機密情報が含まれる場合にセキュリティリスクを高める可能性も否定できない。これらの問題を未然に防ぎ、システムの健全な運用を保つためにログローテーションは必須の機能となる。

ログローテーションの具体的な仕組みは、主に以下の動作によって構成される。まず、特定の条件が満たされたときに、現在書き込み中のログファイルを閉じ、新しいログファイルに切り替える。この条件は、ログファイルのサイズが一定値を超えたときや、一定の期間(例えば毎日、毎週、毎月)が経過したときなど、システム管理者によって設定される。新しいログファイルに切り替えられた古いログファイルは、その識別を容易にするために、通常は元のファイル名に番号や日付が付与されてリネームされる。例えば、「system.log」が「system.log.1」や「system.log-2023-10-26」といった名前に変更される。

リネームされた古いログファイルは、そのまま保存されることもあれば、ディスク容量を節約するために圧縮されることが多い。gzipやbzip2といった圧縮ツールが用いられ、「system.log.1.gz」のように拡張子が付加される。これにより、元のサイズの数分の1から数十分の1にまで容量を削減できる場合がある。さらに、ログローテーションの設定には、ログファイルをどれくらいの期間保持するかという「保持期間」も含まれる。この保持期間を超えた最も古いログファイルは、自動的に削除される。例えば、「過去7日間のログは保持し、それ以前のものは削除する」といった設定が可能である。このようにして、常に一定量のログのみがディスク上に存在するように管理され、ディスク容量の圧迫が回避される。

ログローテーションは、OS標準の機能として提供されていることが多い。Linuxシステムでは「logrotate」というデーモンが広く利用されており、/etc/logrotate.confや/etc/logrotate.d/ディレクトリ内の設定ファイルに従ってログローテーションを実行する。Windowsシステムでは、イベントログのローテーション設定が提供されているほか、IISなどのWebサーバーは自身のログローテーション機能を持つ。また、多くのアプリケーションサーバーやミドルウェアも、独自のログローテーション機能を内蔵している。

ログローテーションを適切に設定することで得られるメリットは多岐にわたる。まず、ディスク容量の効率的な利用が実現され、容量不足によるシステム停止のリスクを大幅に低減できる。次に、ログファイルのサイズが常に管理された状態にあるため、ログ解析ツールや検索ツールが高速に動作し、システム管理者の作業効率が向上する。障害発生時にも、最新の重要なログが迅速に参照できるようになるため、問題解決までの時間を短縮できる。また、監査要件や法的要件に基づいて特定の期間のログを保持する必要がある場合にも、ログローテーションは自動的にその要件を満たす助けとなる。

ログローテーションの設定にあたっては、ログの種類やシステムの特性に応じて適切なポリシーを策定することが重要である。たとえば、エラーログは障害発生時の原因究明に不可欠であるため、比較的長期間保持することが望ましいかもしれない。一方で、デバッグログのように一時的な目的で大量に出力されるログは、短期間で削除しても問題ない場合がある。また、ログを中央集約型のログ管理システムに転送している場合でも、転送の失敗やシステムのダウンに備えて、一定期間はローカルにログを保持するといったフェイルセーフの考慮も必要になる。ログローテーションは、単にファイルを削除するだけでなく、システムの安定性、運用効率、セキュリティ、そしてコンプライアンスを総合的に向上させるための重要な運用技術の一つなのである。

関連コンテンツ