Cronジョブをログに記録するより良い方法を探しています。ほとんどのcronjobは、電子メールやコンソールをスパムしたり、無視したり、さらに別のログファイルを作成したりする傾向があります。
この場合、中央のNagiosサーバーにデータを送信するNagios NSCAスクリプトがあります。このsend_nscaスクリプトは、1つのステータス行をSTDOUTに出力し、成功または失敗を示します。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk
これにより、次のメッセージがroot @ localhostに電子メールで送信され、それが私のシステム管理者チームに転送されます。スパム。
転送されたnsca_check_disk:1つのデータパケットがホストに正常に送信されました。
私は次のようなロギング方法を探しています:
この質問を書く過程で、私は自分に答えました。それで、私は自分に「 Jeopardy-style 」と答えます。これは、デニス・ウィリアムソンによって提供された答えを拡張します。
以下は、任意のCron出力を/usr/bin/logger
(2>&1
を使用してstdoutに変換されるstderrを含む)に送信し、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ディストリビューションはすでにログローテーションを行っており、うまく機能しています。
logger を介して出力をパイプします。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice
編集:更新は正しい方法のように見えます。
オプション-s
(またはBusyboxでは-S
)を指定してcrond
を実行し、出力がsyslog
に送信されるようにすることもできます。