Logrotateは、大量のログファイルを生成するサーバーを管理する管理者のために設計されたユーティリティで、ディスクスペースを節約し、ディスクスペースの不足によってシステムが応答しなくなるという潜在的なリスクを回避することができます。 通常、このような問題を回避するには、/varマウントポイント用に別のパーティションまたは論理ボリュームを設定する必要があります。 しかし、すべてのログを別のパーティションに移すのが遅すぎた場合には、logrotateもこの問題に対する実行可能な解決策となるでしょう。
Logrotate とは
Logrotate は、システム管理者がシステムによって生成されたすべてのログ ファイルを体系的に回転およびアーカイブする機能を提供し、オペレーティング システムのディスク領域の要件を削減します。 デフォルトでは、/etc/cron.daily/
# ls /etc/cron.daily/
cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
Configuring Logrotate
Logrotateの設定は、2つの独立した設定ファイルを編集することで行われます:
- /etc/logrotate.conf
- /etc/logrotate.d/に格納されているサービス固有の設定ファイル
メインのlogrotate.confファイルには、一般的な設定が含まれています。
1 weekly 2 rotate 4 3 create 4 dateext 5 include /etc/logrotate.d 6 /var/log/wtmp { 7 monthly 8 create 0664 root utmp 9 minsize 1M 10 rotate 1 11 }
- 1行目-weekly構成オプションは、メインの構成ファイルと/etc/logrotate.d/ディレクトリで定義されたすべてのログファイルの週ごとのローテーションを保証します。
- 2行目 – rotate 4は、logrotateがすべてのログファイルの4週間分のバックアップを保持するようにします
- 3行目 – createオプションは、各ローテーションの後に新しい空のログファイルを作成するようにlogrotateに指示します
- 4行目 – dateextは、各特定のログファイルがlogrotateによって処理された日付の形で、ローテーションされたすべてのログファイルに拡張子を追加します
- 5行目 – /etc/logrotate.dディレクトリから他のすべての設定を含めます。
- 6行目 – 11には、特定のサービスのログ回転設定が含まれています
logrotate.confとは対照的に、ディレクトリ/etc/logrotate.d/には、logrotateが使用する特定のサービス設定ファイルが含まれています。
RSSとNEWSLETTERを購読すると、最新のLinuxニュース、仕事、キャリアアドバイス、チュートリアルなどを受け取ることができます。
logrotateへの新しいサービスログの組み込み
このセクションでは、logrotateの設定に新しいログファイルを追加します。 例えば、/var/logディレクトリに、毎日ローテーションする必要のある、
/var/log/linuxcareer.log
というログファイルがあるとします。
/var/log/linuxcareer.log
/var/logディレクトリには、毎日ローテーションする必要があります。d/linuxcareer:
/var/log/linuxcareer.log {
missingok
notifempty
compress
size 20k
daily
create 0600 root root
}
上記のlogrotate設定ファイルを1行ずつ説明します。
TIP: 1つの設定ファイルに複数のログファイルを含める場合は、ワイルドカードを使用してください。 例えば、/var/log/mylogs/*.logは、/var/log/mylogs/にある拡張子.logを持つすべてのログファイルを回転させるようlogrotateに指示します。
- missingok – ログファイルが見つからない場合にエラーを出力しない
- notifempty – ログファイルが空の場合に回転させない
- compress – 古いバージョンのログファイルはデフォルトでgzip(1)で圧縮される
- size – ログファイルのサイズを指定する。 ログファイルが 20k より大きくなった場合のみローテーションを行う
- daily – 毎日ローテーションを行う
- create – 所有者とグループが root ユーザーの場合、パーミッションが 600 の新しいログファイルを作成する
logrotate ユーティリティは、さらに多くの設定オプションを提供するため、非常に多機能です。 以下では、ログローテートの他の設定オプションをいくつか紹介します。
$ man logrotate
- copy – ログ ファイルのコピーを作成しますが、元のファイルは一切変更しません。
- mail <email@address> – ログが存在しないようにローテートされると、アドレスに郵送されます。
- olddir <directory><directory>に移動されます。
- postrotate/endscript – postrotateとendscriptの間の行は、ログファイルがローテーションされた後に実行されます。
新しいLogrotateの構成をテストする
新しいlogrotateの構成ファイルを/etc/logrotate内に作成したら、次のようにします。d:
いくつかのサンプル ログ ファイルを作成します (存在しない場合):
# echo "rotate my log file" > /var/log/linuxcareer.log
ログ ファイルが配置されたら、-f オプションを使用して logrotate にすべてのログを回転させます。
さて、再び /var/log/directory にアクセスして、ログ ファイルがローテーションされ、新しいログ ファイルが作成されたことを確認してみましょう:
ご覧のように、新しい空のログ ファイル linuxcareer.
見てのとおり、新しい空のログ ファイル linuxcareer.log が作成され、古い linuxcareer.log ファイルは gzip で圧縮され、日付の拡張子で名前が変更されました。
結論
既に述べたように、システムがログ ファイルによって詰まるのを防ぐ最良の方法は、/var/ またはさらに良いことに /var/log ディレクトリ用に別のパーティション/論理ボリュームを作成することです。 しかし、その場合でも、logrotate は、ログファイルを圧縮することで、ディスクスペースを節約するのに役立ちます。 また、logrotateはログファイルのアーカイブを行い、将来の参考にするために余分なコピーを作成したり、新しくローテートされたログファイルをメールで送信したりすることもできます。 詳しくは、logrotateのマニュアルページをご覧ください。