logrotate が正常に実行されていない場合に logrotate の警告やエラーをデバッグする方法
Environment
- Red Hat Enterprise Linux (RHEL) (すべてのバージョン)
Issue
logrotate が正常に実行されていない場合に logrotate の警告やエラーをデバッグする方法
Resolution
logrotate.status ファイルを確認する
-
logrotate.statusファイルで、どのファイルがローテーションされたかを確認します。# cat /var/lib/logrotate/logrotate.status
デバッグモードで logrotate を実行する
-
手動で
logrotateコマンドをデバッグモードで実行し、エラーがないか確認します。# /usr/sbin/logrotate -d /etc/logrotate.conf
問題の原因となっている設定ファイルを特定する
- デバッグ出力で報告されたエラーに応じて、
/etc/logrotate.confや/etc/logrotate.d/配下の設定ファイルで設定の問題を修正するか、デバッグ出力で報告されたその他の問題を修正します。
デバッグモードで logrotate を再実行する
# /usr/sbin/logrotate -d /etc/logrotate.conf
エラーが表示されない場合は、logrotate は正常に動作するはずです。
異なる logrotate インスタンス間で logrotate.status ファイルを共有しない
- システムには、同じ
logrotate.statusファイルを共有する 複数 の logrotate 設定インスタンスが存在する可能性があります。これにより競合状態が発生します。 - 各設定インスタンスには、それぞれ異なる
logrotate.statusファイルが必要です。競合により予期しない問題が発生する可能性があります。 -
各 logrotate 設定を分離するために、
--state /path/to/status_filenameオプションを追加します。$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf <<=== This use default '/var/lib/logrotate/logrotate.status' [..omit..] $ cat /etc/cron.hourly/logrotate_rsyslog #!/bin/sh /usr/sbin/logrotate /etc/logrotate_rsyslog.conf <<=== Also use default '/var/lib/logrotate/logrotate.status', CONFLICT! [..omit..]
Root Cause
この例の根本原因は、/var/log/conman.old ディレクトリーが存在しないことです。ディレクトリーを作成すると問題は解決します。
~~~
# mkdir /var/log/conman.old
~~~
Diagnostic Steps
-
次のコマンドで、cron サービスが正常に実行されているか確認します。
# systemctl status crond.service -
/var/log/messagesファイルに警告やエラーが作成されることがあります。以下に例を示します。logrotate: ALERT exited abnormally with [1] -
logrotateコマンドには、デバッグモードをオンにする引数-dがあります。デバッグモードでは、ログや logrotate 状態ファイルは変更されません。必要に応じて、デバッグ出力をファイル (例:/tmp/logrotate.debug) にリダイレクトできます。これはデバッグに非常に役立ちます。# /usr/sbin/logrotate -d /etc/logrotate.conf 2> /tmp/logrotate.debug -
デバッグ出力の例:
reading config file /etc/logrotate.conf including /etc/logrotate.d reading config file acpid reading config info for /var/log/acpid reading config file conman reading config info for /var/log/conman/* olddir is now /var/log/conman.old/ error: conman:21 error verifying olddir path /var/log/conman.old/: No such file or directory
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments