ひと月ほど前に、必要にかられて cron が失敗した時に通知を飛ばすために使う alerty というツールを ruby で書いた。
弊社には同様の perl で書かれたツールがすでにあったが、Amazon SNS を使うという新しい要件もあったので、ruby でさくっと書き直した。プラグイン機構に対応していて、プラグインとして実装することで通知先を増やすことができるようになっている。
いまのところデバッグ用の stdout
, file
、任意のコマンドに結果を渡す exec
、そして Amazon SNS、Ikachan 通知プラグインが実装されている。
- https://github.com/sonots/alerty
- https://github.com/sonots/alerty-plugin-ikachan
- https://github.com/sonots/alerty-plugin-amazon_sns
インストールは gem install alerty
のようにする。必要なプラグインも gem install
する。
設定は /etc/alert/alerty.yml
のようなファイルを作って、
log_path: STDOUT
log_level: 'debug'
timeout: 10
lock_path: /tmp/lock
plugins:
- type: stdout
あとは /etc/cron.d/xxxxx に
0 * * * * alerty -c /etc/alerty/alerty.yml -- /path/to/script --foo FOO --bar
のように cron の設定を書けばよい。/path/to/script
の終了コードが 0 (正常終了) じゃない場合に、標準出力、標準エラー出力を alerty に渡して通知が飛ぶ.
使いどころがありそうであれば使ってみてください。とりあえず slack プラグインはあったほうがよさそう。