パソコン鳥のブログ

アクセスカウンタ

zoom RSS cron実行でエラー時のみメール送信させる

<<   作成日時 : 2017/11/02 18:46   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 6 / トラックバック 0 / コメント 0

cron を使用するに際し、次のような不満点があります。
  • cronのログ(/var/log/cron)では、cron で実行した各コマンドの成功/失敗は分からない

  • cron は出力を受け取ると MAILTO に指定されたアドレスに、その内容をメールする。
    通常の出力内容もメールされてしまう。


特に、エラーでもないのにメール送信されてくることが煩わしいですが、cron実行結果のログを捨てる訳にもいきません。
過去には次のようなツイートも話題になりました。

fujiwaraさんのツイート: "crontabに > /dev/null 書いたら椅子投げる"


cron実行では、次のようなことができたら嬉しいですね。
  • cron実行での出力内容(標準出力とエラー出力両方共)はファイルにログ出力する。

  • cron実行でエラーだった場合のみ、実行結果(標準出力とエラー出力両方共)をメール通知する。


そこで、これらが出来る cronlog を使います。


準備・インストール


cron 実行での出力内容は、設定ファイル(/tec/crontab等)の MAILTO行で指定されたアドレスにメール送信されます。
必要に応じて MAILTO を記述しておきます。

次に cronlog をダウンロード・ビルドします。

wget https://github.com/kazuho/kaztools/archive/master.zip
unzip master.zip
cd kaztools-master
perl Makefile.PL && make && make test

最後に Result: PASS と表示されれば OK です。

インストールします。

sudo make install



実行


下記書式で、cron で実行します。

/usr/local/bin/cronlog --logfile=ログファイル --timestamp -- コマンド


指定した"コマンド"の出力内容(標準出力とエラー出力両方)は、"ログファイル"で指定したファイルに、タイムスタンプ付きで追加出力(append)されます。

以下のような出力です。
XXXXX の箇所にはホスト名が入ります。


[Wed Oct 11 15:05:07 2017] XXXXX starting: sh test.sh
[Wed Oct 11 15:05:07 2017] success
[Wed Oct 11 15:05:07 2017] error
[Wed Oct 11 15:05:07 2017] error2
[Wed Oct 11 15:05:07 2017] success2
[Wed Oct 11 15:05:07 2017] command exited with code:250


"コマンド"の実行が失敗(リターンコードが0以外)なら、ファイルに出力したものと同じ内容を標準出力にも出力します。
オプションに --print-always を付けると、"コマンド" の成功/失敗に関わらず、常に標準出力に出力されます。

これらの標準出力への出力内容は cronによって、 crontabの先頭の MAILTO で指定されたアドレスにメール送信されます。


その他実行例



cronlog --timestamp -- コマンド

コマンドが失敗した時のみ、出力結果をメール送信します。
ファイルには残りません。



cronlog --logfile=ログファイル --timestamp -- コマンド

コマンドの実行結果をファイル出力します。また失敗した時は、出力結果をメール送信します。



cronlog --timestamp --print-always -- コマンド

コマンドの実行結果をいつもメール送信します。
ファイルには残りません。



cronlog --logfile=ログファイル --timestamp --print-always -- コマンド

コマンドの実行結果をいつもファイル出力&メール送信します。

参考


Kazuho@Cybozu Labs: crontab を使って効率的にサービス監視する方法

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 6
なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
cron実行でエラー時のみメール送信させる パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる