cronjobのログの改善?cron出力をsyslogに送信しますか?


43

cronジョブを記録するより良い方法を探しています。ほとんどのcronjobは、電子メールまたはコンソールをスパムするか、無視されるか、さらに別のログファイルを作成する傾向があります。

この場合、中央のNagiosサーバーにデータを送信するNagios NSCAスクリプトがあります。このsend_nscaスクリプトは、成功または失敗を示す単一のステータス行をSTDOUTに出力します。

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

これにより、次のメッセージがroot @ localhostに電子メールで送信され、sysadminsのチームに転送されます。スパム。

転送されたnsca_check_disk:1データパケットがホストに正常に送信されました。

私は次のロギング方法を探しています:

  1. メールやコンソールへのメッセージをスパムしません
  2. 数か月または数年後にクリーンアップを必要とする別のkruftyログファイルを作成しないでください。
  3. ログ情報をどこかにキャプチャして、必要に応じて後で表示できるようにします。
  4. ほとんどのUNIXで動作します
  5. 既存のログインフラストラクチャに適合します。
  6. 「ファシリティ」や「優先度」などの一般的なsyslog規則を使用します
  7. 常に内部でログを記録するとは限らないサードパーティのスクリプトを使用できます。

回答:


69

この質問を書く過程で、私は自分自身に答えました。それで、私は自分自身に「Jeopardy-style」と答えます。これは、デニスウィリアムソンが提供した答えを拡張したものです。

以下は、すべてのCron出力を/usr/bin/logger(を使用してstdoutに変換されるstderrを含む2>&1)に送信します。これは、「タグ」とともにsyslogに送信されnsca_check_diskます。Syslogはそこからそれを処理します。これらのシステム(CentOSおよびFreeBSD)にはすでにログローテーションメカニズムが組み込まれているvar/log/mycustom.logため、ディスクのようなログがいっぱいになることを心配する必要はありません。

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

/ var / log / messagesには、これを示す1つの追加メッセージがあります。

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

/ usr / bin / loggerが好きです。これは、既存のsyslog構成とインフラストラクチャでうまく機能し、ほとんどのUnixディストリビューションに含まれているためです。ほとんどの* nixディストリビューションはすでにログのローテーションを行っており、うまく機能しています。


1
2>&1コマンドは何をしますか?どういう意味ですか?ありがとうございました。
ブレットスキー


Ubuntuでsystemdを使用した00 00 * * * systemd-cat -t "tagname" /path/to/app.shsudo crontab -u root -e
-dashesy

5

出力をloggerにパイプします。

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

編集:更新は正しい方法のように見えます。


ありがとう!質問を投稿した後、Apacheパイプがログ出力を/ usr / bin / loggerに記録するのを見ました。出力をlogger(1)にパイプできることに気がつきませんでした-マンページにはありません!
ステファンLasiewski

2
「メッセージ-メッセージをログに書き込みます。指定されておらず、-fフラグが指定されていない場合、標準入力がログに記録されます。」
デニスウィリアムソン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.