Translated message

A translation of this page exists in English.

logrotate が正常に実行されていない場合に logrotate の警告やエラーをデバッグする方法

Solution Verified - Updated -

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