さくらのVPSの設定 – logrotateの設定


WEB サーバーやメールサーバーなどのログは放っておくとファイルサイズがどんどん大きくなっていきます。 logrotate を使って一定の期間やサイズごとにファイルを分けるとログを扱いやすくなります。 その設定方法を説明します。

詳しい情報は man logrotate で確認するか、または次のリンク先をご覧ください。
logrotate(8) – Linux man page

設定ファイルの概要

logrotate の大本の設定ファイルは /etc/logrotate.conf です。 このファイルから、/etc/logrotate.d/ ディレクトリ以下にあるアプリケーションごとの設定ファイルが読み込まれるようになっています。

/etc/logrotate.conf ではデフォルト値の設定などを行い、/etc/logrotate.d/ 以下のファイルでローテーション対象のファイルなどを設定します。

設定の例

/etc/logrotate.d/httpd

/var/log/httpd/access_log /var/log/httpd/error_log {
    daily
    size 0
    notifempty
    rotate 90
    missingok

    compress
    delaycompress

    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

設定の意味

/var/log/httpd/access_log と /var/log/httpd/error_log に対するローテーションの設定を行っています。 対象のファイルは、ワイルドカードを使って /var/log/httpd/*log と指定することもできます。 この設定では、ログのサイズが 0 でない限り毎日ローテーションし、前日のログを gzip 圧縮します。 90日分のログを保存し、それより古くなったファイルは削除されます。 最後に Apache に設定を再読み込みするよう指令を出しています。(ログ出力先をリセットするため)

各設定項目の詳細については、logrotate(8) – Linux man page@IT:logrotateの設定ファイルで指定できる主なコマンド をご覧ください。

logrotate のテスト

次の様にオプションを指定して実行することで、設定の妥当性や logrotate の動きを確認できます。

$ logrotate -dv /etc/logrotate.d/httpd

-d オプションを指定すると、実際のローテーションや logrotate.status への履歴の記録は行われません。

参考: @IT:logrotateのテストを行うには

※期待に反し log does not need rotating などと表示されてローテーションされない場合は以下のリンク先を参考に対処してください。
logrotateでログファイルがローテーションされない事への対処|A Day In The Boy’s Life

logrotate の実行

さくらの VPS では、最初から logrotate が毎日実行されるようになっています。

$ logrotate /etc/logrotate.conf

logrotate のログ

logrotate の実行履歴は、デフォルトでは /var/lib/logrotate.status で管理されています。

カテゴリー: 記事 タグ: パーマリンク

コメントを残す