ログローテーションの仕組みと設計の基本

サーバーやアプリケーションを運用していると、必ずと言っていいほど登場するのが「ログ」です。エラーが起きたときの調査、処理の流れの確認、セキュリティ監査など、ログはシステムの状態を知るための大切な手がかりになります。

ただし、ログは放っておくとどんどん増えていきます。気づいたらディスクがいっぱいになってサービスが止まってしまった、というのは現場ではよくある話です。そこで重要になるのが ログローテーション という仕組みです。

この記事では、ログローテーションの基本的な考え方から、仕組み、設計のポイントまでを、初心者の方にもわかるように丁寧に解説していきます。運用に関わり始めたばかりの方や、「なんとなく設定しているけど実はよくわかっていない」という方にも役立つ内容を目指します。

目次

ログローテーションとは何か

ログが増え続けると何が困るのか

まず前提として、なぜログを管理する必要があるのかを整理しておきます。

ログファイルは、アプリケーションが動くたびに追記されていくのが一般的です。たとえばWebサーバーであれば、アクセスがあるたびに1行ずつログが増えていきます。1日では数MBでも、1か月、半年、1年と積み重なると、数GBや数十GBになることも珍しくありません。

この状態で困るのが、以下のような問題です。

  • ディスク容量を圧迫してしまう
  • ログが大きすぎて開くのに時間がかかる
  • 必要な情報を探すのが大変になる

ログは「残すこと」も大事ですが、「適切なサイズに保つこと」も同じくらい大切です。

ログローテーションの基本的な役割

ログローテーションとは、簡単に言うと ログを定期的に区切って整理する仕組み です。

たとえば、

  • 今日までのログを別ファイルに退避する
  • 新しいログファイルを作って、そこに書き込みを続ける
  • 古くなったログは削除する、または圧縮する

といった一連の流れを自動で行います。

日記帳に例えると、1冊がいっぱいになる前に次のノートに切り替え、古いノートは本棚にしまったり、不要なら処分したりするイメージです。ログローテーションは、システムの「ログ日記帳」を整理整頓する役割を担っています。

ログローテーションの仕組み

ローテーションのタイミング

ログローテーションには、いくつか代表的な実行タイミングがあります。

よく使われるのは次の2つです。

  • 時間ベース  1日ごと、1週間ごと、1か月ごとなど、時間を基準に切り替える方法です。 アクセスログやアプリケーションログでよく使われます。
  • サイズベース  ログファイルが一定サイズを超えたら切り替える方法です。 突発的にログが増えるシステムで有効です。

実際の現場では、「1日ごとにローテーションし、サイズが大きすぎる場合は途中でも切り替える」といった組み合わせもよく見られます。

ローテーション時に行われる処理

ログローテーションが実行されると、内部では次のような処理が行われます。

  1. 現在のログファイルをリネームする
  2. 新しいログファイルを作成する
  3. 古いログを圧縮する(必要に応じて)
  4. 保存期間を超えたログを削除する

たとえば app.log というファイルがある場合、ローテーション後に app.log.1app.log.20250101 のような名前に変わり、新しい app.log が作られます。

この仕組みによって、アプリケーションは意識することなく、常に同じファイル名にログを書き続けられます。

代表的なツールと考え方

Linux環境では logrotate という仕組みが広く使われています。設定ファイルに「いつ」「どのログを」「どう扱うか」を書いておくと、定期的に自動実行されます。

ここで重要なのは、ツールそのものよりも 考え方 です。どのツールを使うにしても、次の点は共通しています。

  • ログを無限に増やさない
  • 必要な期間だけ保存する
  • 運用を自動化する

この3点を押さえておくと、環境が変わっても応用が利きます。

ログローテーション設計の基本

保存期間をどう決めるか

ログをどれくらい残すかは、システムの性質によって変わります。

目安としては次のように考えると整理しやすくなります。

  • 障害調査にどれくらい過去の情報が必要か
  • 法的・社内ルールで保存期間が決まっていないか
  • ログのサイズとディスク容量のバランス

たとえば、障害対応で「過去1か月分あれば十分」なら、それ以上は削除しても問題ないケースが多いです。一方、監査目的で半年や1年の保存が必要な場合もあります。

圧縮は積極的に使う

古いログは 圧縮 することで、ディスク使用量を大幅に減らせます。

テキストログは圧縮効率が高く、半分以下、場合によっては10分の1程度になることもあります。最近のCPU性能を考えると、圧縮・解凍の負荷が問題になるケースはそれほど多くありません。

「すぐに見る可能性が低いログは圧縮する」という考え方は、かなり実用的です。

アプリケーションとの連携に注意する

ログローテーション設計で意外と見落とされがちなのが、アプリケーション側との相性です。

アプリケーションによっては、

  • ログファイルがリネームされると書き込みが止まる
  • 再起動しないと新しいログに書けない

といった挙動をするものがあります。

この場合、ローテーション後にログ出力を再オープンする仕組み(シグナル送信など)が必要になります。設計時には、「このアプリはどうやってログを書いているのか」を一度確認しておくと安心です。

実務で押さえておきたいポイント

障害時に役立つログを残す

ログローテーションは整理のための仕組みですが、「消しすぎない」ことも重要です。

障害が起きた直後に、「原因を調べようと思ったらログがもう消えていた」というのは避けたいところです。少なくとも、一次対応に必要な期間分は必ず残るように設計します。

実務では、「通常は7日、重要システムは30日」といったように、システムごとに基準を分けることがよくあります。

本番環境ほど慎重に

検証環境では多少雑でも問題になりにくいですが、本番環境のログローテーションは慎重に行う必要があります。

  • ローテーションのタイミングでログが欠けないか
  • ディスクが逼迫したときの挙動はどうなるか
  • 想定外のログ増加に耐えられるか

一度設定したら終わりではなく、定期的にログのサイズや増え方を確認し、必要に応じて見直すことが大切です。

「見える化」しておくと安心

ログローテーションが正しく動いているかは、放置していると気づきにくいものです。

ディスク使用量を監視したり、ログファイルのサイズや数を定期的にチェックしたりすることで、「何かおかしい」に早めに気づけます。運用は仕組みとセットで考えるのがポイントです。

一問一答:よくある疑問

ログローテーションを設定しないとどうなる?

ログが無制限に増え、最終的にはディスク不足でサービス停止につながる可能性があります。

サイズベースと時間ベースはどちらが良い?

一概には言えません。アクセス量が安定しているなら時間ベース、変動が激しいならサイズベースが向いています。

圧縮すると調査が大変にならない?

多少手間は増えますが、必要なときだけ解凍すれば問題ありません。ディスク節約のメリットの方が大きいケースが多いです。

まとめ

ログローテーションは、派手さはないものの、安定したシステム運用を支える重要な仕組みです。

ポイントを振り返ると、

  • ログは放置すると必ず問題になる
  • ログローテーションは整理と安全のための仕組み
  • 保存期間、圧縮、アプリとの連携を意識する
  • 設定後も定期的な見直しが大切

という点が挙げられます。

最初は少しとっつきにくく感じるかもしれませんが、一度考え方を理解すると応用が利きます。ログローテーションをきちんと設計できるようになると、運用全体の見通しも良くなり、トラブル対応にも自信が持てるようになります。

日々の運用を少し楽にするためにも、ぜひこの機会にログローテーションの仕組みを整理してみてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次