エレクトロニクス

Linuxでlogrotateを使ったログファイル管理の基本

背景

サーバーを長時間稼働させると、ログファイルは日々増加し続け、放置するとディスクを圧迫してしまいます。ログファイルが肥大化すると検索や分析も非効率になり、ストレージ不足によるサービス停止のリスクも生じます。Linux では logrotate というログローテーションツールが標準的に用意されており、ログファイルを定期的にローテーションして古いログを圧縮・削除する仕組みを提供します。本記事では、logrotate の基本設定とカスタマイズ方法を解説します。

手順

1. logrotate の概要を理解する
logrotate は指定した設定ファイルに基づき、一定の間隔でログファイルをコピー・圧縮し、元のファイルをクリアします。ほとんどのディストリビューションではデフォルトでインストールされています。

2. 設定ファイルの構造
logrotate の全体設定は `/etc/logrotate.conf` にあり、個別のサービスごとの設定は `/etc/logrotate.d/` ディレクトリに格納されています。各設定ファイルでは対象ログファイルのパスやローテーション周期、圧縮方法、保持期間などを指定します。

3. 基本的な設定項目
daily や weekly : ローテーションの頻度を指定します。 rotate 4 : 保持するローテーションファイル数を設定します。 compress : ローテーションしたログを gzip などで圧縮します。 missingok : 対象ファイルが無くてもエラーにしません。

4. カスタム設定の追加
例えば /var/log/nginx/access.log を毎週ローテーションし、4世代保持して圧縮する場合、次のようなファイルを /etc/logrotate.d/nginx に作成します。

/var/log/nginx/access.log {
    weekly
    rotate 4
    compress
    missingok
    postrotate
        systemctl reload nginx.service > /dev/null 2>&1 || true
    endscript
}
postrotate ブロックではローテーション後に実行するコマンドを指定でき、ここでは nginx を再読み込みしてログファイルを再オープンさせています。

5. 設定のテストと実行
新しく作成した設定ファイルが正しく機能するか確認するには、logrotate -d /etc/logrotate.d/nginx を実行してドライランを行います。また、強制的にローテーションを実行する場合は sudo logrotate -f /etc/logrotate.d/nginx を使用します。

まとめ

logrotate を活用することで、ログファイルの肥大化を防ぎ、システムの健全性を保てます。基本の設定に加えて、サービスごとに最適なローテーション周期や保持期間を設定することで、ディスク容量を効率的に管理できます。定期的に logrotate -d で設定をテストし、不要なログが溜まっていないか確認する習慣を身に付けましょう。

  • この記事を書いた人

たけぞう

熊谷に住みながら都内のIT企業でエンジニアをしています。ガジェットやアウトドア用品についてレビューをしていきます。 趣味はスポーツジムでトレーニングやジョギングをすることです。

-エレクトロニクス