RackShareRackShareラックを、シェアしよう

logrotateでログのディスク枯渇を防ぐ

ハク@インフラエンジニア ・ 公開 2026-07-28 ・ 更新 2026-09-04 ・ 閲覧 230
技術解説 #障害対応

「ディスクが満杯で障害」——原因の常連がログの肥大です。これを自動でさばく logrotate の使い方をまとめます。

なぜログは危険なのか

アプリやアクセスログは、放っておくと際限なく増えます。気づいたらディスク100%でサービス停止、は運用あるあるです。logrotateは、ログを定期的に分割・圧縮・古いものを削除して、自動で肥大を防ぎます。

仕組み

多くのディストリでは、logrotateが毎日cronで自動実行されます。設定は /etc/logrotate.d/ にサービスごとのファイルを置きます。

設定例

/var/log/myapp/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

各行の意味は、

  • daily … 毎日ローテート
  • rotate 14 … 14世代(14日分)保持し、それより古いのは削除
  • compress … 古いログをgzip圧縮
  • missingok … ログが無くてもエラーにしない
  • notifempty … 空なら回さない
  • copytruncate … コピーして元を空にする(アプリを止められない時に有効)

copytruncate に注意

copytruncate は、アプリがログを開いたまま書き続ける場合に便利ですが、コピーと切り詰めの一瞬に書かれたログが欠ける可能性があります。アプリがログの再オープンに対応しているなら、postrotate でシグナルを送る方式の方が確実です。

postrotate
    systemctl reload myapp
endscript

テスト実行

いきなり本番に効かせる前に、デバッグ実行で確認します。

logrotate -d /etc/logrotate.d/myapp    … 実行せず動作確認(dry-run)
logrotate -f /etc/logrotate.d/myapp    … 強制実行してテスト

まとめ

  • ログは放置すると必ず溢れる
  • rotate(世代数)と compress で容量を抑える
  • 設定したら -d で必ず確認

ディスク枯渇は予防できる障害です。新しくログを吐くアプリを入れたら、セットでlogrotateを設定する——これを習慣にすると、夜中の呼び出しが確実に減ります。

♥ 0(いいねはログイン後)

コメント 0 件

コメントするにはログインしてください。