Logwatch documentation は、LogFile
コマンドが絶対パスを処理できることを示しています。したがって、/ etc/logwatch/conf/servicesに次のようにcelery.confファイルがあります。
Title = "Watchdog Celery worker errors"
LogFile = /var/log/208-celery.log
LogFile = /var/log/234-celery.log
LogFile = /var/log/403-celery.log
LogFile = /var/log/dev-celery.log
(指定された4つのログファイルを1つのグループにまとめてlogwatchすることを目的としています。)
このエラーが発生します:
*** Error: There is no logfile defined. Do you have a /etc/logwatch/conf/logfiles//var/log/208-celery.log.conf file ?
*** Error: There is no logfile defined. Do you have a /etc/logwatch/conf/logfiles//var/log/234-celery.log.conf file ?
*** Error: There is no logfile defined. Do you have a /etc/logwatch/conf/logfiles//var/log/403-celery.log.conf file ?
*** Error: There is no logfile defined. Do you have a /etc/logwatch/conf/logfiles//var/log/dev-celery.log.conf file ?
Can't open: /usr/share/logwatch/scripts/services/celery at /usr/sbin/logwatch line 1329.
Logwatchが何らかの理由でLogFile
コマンドを絶対パスとして解釈していないようです。これらのログファイルがこれらのパスに確実に存在することを確認しました。 「開くことができません...」エラーについては、LogFileコマンドが機能していないため、logwatchがデフォルトの構成を探していると思います。
だから:どうすればlogwatchにそれらの特定のログファイルを正しく監視させることができますか?
注:Ubuntu 12.04.4LTSで実行されているlogwatchv7.4.0を使用しています。
LogFile
の下の構成ファイルのservices
エントリは、logfiles
の下の対応する構成ファイルで定義されているログファイルグループを参照します。ログファイルグループの構成については、リンク先のドキュメントのセクションAを参照してください。
#これは、デフォルトのログファイルディレクトリ(おそらく/ var/log)にある「messages」という名前のログファイルになります。 LogFile =メッセージ
#次のように、絶対パスを使用してこのコマンドを指定することもできます:LogFile =/var/log/messages
そして、services
..の下の設定ファイルでこれらのグループを参照するためのセクションB.
/ var/log/messagesからのメッセージを必要とするサービスフィルターの場合、次の行を追加します。
LogFile =メッセージ
注:これはnotです。これは、ログファイルの名前が「messages」であるためですが、定義されているLogFileグループの名前が「messages」であるためです。
エラー/usr/share/logwatch/scripts/services/celery
は、ドキュメントのセクションCで説明されているように、サービスフィルター実行可能ファイルを作成していないためです。これは(サンプルスクリプトを使用して)/etc/logwatch/scripts/services
の下に作成し、実行可能であることを確認する必要があります。私はこれを試しました(CentOS7.2のlogwatch7.4.0で、期待どおりに動作します。