今号では、前回紹介しきれなかったログローテーションの設定について、もう少し深堀りして見ていきます!
設定ファイルに設定可能な情報
前回、デフォルトの設定からどのような設定項目があるかを見ていきました。
今回は、それ以外にどのような設定があるのか、よく使用されると考えられる設定項目からピックアップして解説します。
- ローテートの頻度
– daily:毎日
– weekly:毎週
– mounthly:毎月
– yearly:毎年 - 圧縮の有無
– compress:圧縮する
– nocompress:圧縮しない (デフォルト) - 空のログファイルの扱い
– notifempty:空のログはローテートしない
– ifempty:空のログもローテートする (デフォルト)
さらに、下記設定項目を使用することで、より詳細に動作を設定することができます。
- delaycompress
ローテート直後のログをすぐに圧縮せず、次回ローテート時に圧縮します。
【例】ローテート1回目 log → log.1、2回目 log.1 → log.2.gz (ここで log.1 を圧縮する) …と続く - olddir
ローテート後のログの保存先を指定します。
ディレクトリは事前に作成しておく必要があります。 - copytruncate
ログをコピーしてから元のログを空にします。
特定のアプリが、ファイルを参照し続けている (開きっぱなし) の場合などに有用な設定です。ただしローテート中にログが書き込まれた場合、当該ログが消えるリスクがあるので要注意です。ログの書き込みが少ない時間帯に実行するなど、運用でカバーする工夫が必要です。
運用における補足事項
- 設定ファイルは /etc/logrotate.d 配下で運用
/etc/logrotate.conf は基本的に編集せず、個別のログローテーション設定を /etc/logrotate.d 配下に配置することを推奨します。 - 設定変更後は、まずは動作テストを実行
logrotate -d コマンドでテスト実行 (実際にはローテートしない) ができます。
実際にローテートを実行する前に動作に問題が発生しないか確認しましょう。反対に、logrotate -f コマンドを実行すると設定変更後ただちにローテートされます。
- ディスク容量の定期的なチェック
長期間ファイルをローテートしていくと、古いログが溜まりすぎてシステムの容量を圧迫する可能性があります。
定期的にディスク容量をチェックするようにし、必要に応じてログの退避などの対応をしましょう。