WEBサイトの死活監視のサービスはいろいろあるけれど、どれも監視できるURL数に制限があったり、制限を解除してもらうには費用がかかるわけなのだけれど求める以上の機能があってちょっと高くついたり。なかなかピッタリこない。
仕方がない、さくらのレンタルサーバが1つあるのでそこで監視するようにしてみよう。社内のサーバ監視をしているNagiosは便利なんだけれど、さくらの500円/月のレンタルサーバに入れるのはちょっとアレだし、必要最小限のスクリプトをPythonで書くことにする。
求めた要件としては、
- HTTPで接続できなかったらメールでお知らせが届く。
- 一回メールを送ったら、しばらくはメールしないで欲しい。
- HEADとGETとPOSTに対応。
- HTTPステータスコードだけをチェックする(レスポンスに含まれるコンテンツのチェックは不要)。
- 設定ファイルで複数のURLをまとめてチェックして欲しい。
- (さくらなので)常駐するデーモンではなくて、単独のコマンドで実行できる(cronで繰り返し実行)。
- お知らせメールはcrontabのMAILTOで送るからstderrに出力してくれればいい。
- OKだったときのログはstdoutに出力してくれればいい。
- スクリプトは1ファイルで完結させる。
- Python2.4以降、標準ライブラリだけで動く。