webサーバー死活監視自作してみた by ruby + sinatra + heroku

自分のサービスの監視とか全くしてないのでどうかと思い作ってみた。

定期的にwebサービスへGETリクエストを送りレスポンスが200以外だったらアラートメールを送る

っていう単純なもの

デモ
http://webservicemonitor.herokuapp.com/
ソース
shoprev/webservicemonitor · GitHub

定期実行はrufus-scheduler gemで

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

scheduler.every '3h' do
  # do something every 3 hours
end

webページの表示はsinatraのstreaming使った

require 'sinatra'
set server: 'thin', connections: []
 
get '/stream', provides: 'text/event-stream' do
  stream :keep_open do |out|
    settings.connections << out
    out.callback { settings.connections.delete(out) }
  end
end
 
post '/' do
  settings.connections.each { |out| out << "data: #{params[:msg]}\n\n" }
end

webページのレイアウトはtwitterbootstrap

参考
jmettraux/rufus-scheduler · GitHub
Sinatra::Streaming (part of Sinatra::Contrib)
uu59のメモ | Sinatra 1.3で追加されたstreamのHTTP解剖学
https://gist.github.com/rkh/1476463