ひと月ほど前に、必要にかられて cron でのコマンド実行が失敗した時に通知を飛ばすために使う alerty というツールを ruby でさくっと書いた。
社内には同様の perl で書かれたツールがすでにあったが(自分が知ってるだけで2つあった)、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: 'warn' timeout: 10 lock_path: /tmp/lock plugins: - type: stdout
- type: ikachan
host: ikachan.test.local
channel: notify
subject: FAILURE: [${hostname}]
${command}
あとは /etc/cron.d/xxxxx に
0 * * * * alerty -c /etc/alerty/alerty.yml -- /path/to/script --foo FOO --bar
のように cron の設定を書けばよい。/path/to/script
の終了コードが 0 (正常終了) じゃない場合に、標準出力、標準エラー出力を alerty に渡して通知が飛ぶ.
おわりに
プラグイン追加 welcome。自分は daioikachan を使っているので作ってないけど、slack 通知プラグインはあってもよさそう。