Poor man's website monitoring service

Webサイト監視サービスは山のようにあるんですが、Uptime RobotStatusCakeがいい感じです。

  • どちらもFree planで監視数が多い
  • Free planで基本的な機能が提供されている
    • HTTP/HTTPS/Ping/Port…
    • HTTPSは有料」というのが国内だと多いように思います
  • ページがわりとモダン
    • 他のサービスだとWeb 1.0を地でいくものや、Web 1.5的リッチUIが多いような…
  • Web APIがある

ちょっと前までStatusCakeを知らなくて、Uptime Robot以外の監視サービスで自サービスの死活監視するとしたらPingdomかなぁ…と思ってたんですが、StatusCakeを見つけて「貧民でも可用性の高い死活監視ができるぞ」と喜んでいるところです。ありがたいことです。

Uptime Robot

https://uptimerobot.com/

f:id:winebarrel:20150103121028p:plain

  • ポリシーとしてできる限り無料で提供するみたいです
  • 最大監視数は50
  • HTTP/HTTPS/キーワード/Ping/Port
  • 通知はe-mail/twitter/HTTP/SMS/Slack・HipChat連携等々
    • SMSは日本未対応。残念
  • Webコンソール触ってるとたまにバグっぽい挙動に当たることがありました
  • APIたたくと即反映されるんですが、情報取得系APIがキャッシュされてるらしく/getMonitorsの内容が更新されるまでに30秒ぐらい必要です

StatusCake

https://www.statuscake.com/

f:id:winebarrel:20150103102455p:plain

Rubyライブラリ書いた

既存のライブラリはどっちもあるんですが、インターフェースがいまいちだったので、車輪の再発明しました

どっちもWeb APIの薄いラッパーで、API Referenceを読めばそのまま使えるような感じ…だと思います。 しかし、StatusCakeのAPIはいまいちな感じが。特にTestの削除とか。

Uptime RobotをDSLで操作できるようにした

いつもの技芸としてUptime RobotをDSLで操作できるようにしました。 https://github.com/winebarrel/watch_list

以下のようなDSLで、Uptime Robotの監視を定義できます。

monitor "http monitor" do
  target "http://example.com"
  interval 5
  paused false
  alert_contact :email, "alice@example.com"
  type :http
end

alert_contact do
  type :email
  value "alice@example.com"
end

ただし、前述のとおり情報取得系APIへの更新情報の反映にタイムラグがあるので適用直後だと実際に更新済みなのに差分がでたりします。

StatusCakeもそのうちDSL化したいところ。