RubyでWebページの応答時間を計測し、メールで通知

自サーバーのWebアプリが正しい内容、適切な応答時間で動作しているか確認するため、Rubyのopen-uriを使って動作チェックするスクリプトを作成してみました。

(1)仕様


 
・実行環境は、CentOS6.5、Ruby2.0.0。
 
・open-uriを使ってWebページを取得し、titleタグの内容を抽出。正しいタイトルが取得できているかチェック。
 
・titleタグの内容が正しくない場合、または、Webページの応答時間が2秒以上の場合はメールで通知。
 
・スクリプトの実行記録をログファイルに出力する。
 

(2)サンプルスクリプト

require 'rubygems'
require 'mail'
require 'open-uri'

log = File.open('web_chk.log','a')
title_def = "サンプルページのタイトル名"

s_time = Time.now

web_page = open(htp://example.com/wp/sample/").read

e_time = Time.now

title = web_page.scan(/<title>(.*?)<\/title>/m)

if title[0][0] == title_def && e_time - s_time < 2 then
  mail_body = s_time.strftime("%Y-%m-%d %H:%M:%S").to_s + " Web page Title check OK "
  mail_body += "処理時間:#{e_time - s_time}秒\n"
else
  mail_body = s_time.strftime("%Y-%m-%d %H:%M:%S").to_s + " Web page Title check ERROR\n"
  mail_body += "処理時間:#{e_time - s_time}秒\n"
  mail_body += title[0][0] + "\n"
  mail_body += title_def
  Mail.deliver do
    from     'user@src.example.com'
    to       'to@dst.example.com'
    subject  'Test mail'
    body     mail_body
  end
end
log.puts(mail_body)
log.close

(3)サンプルスクリプトの補足説明


 
1)テキストファイルへの追加書込み
 
①追加書込みでオープン
log = File.open('web_chk.log','a')
 
②書込み
mail_body = "処理結果・・・"
log.puts(mail_body)
 
③クローズ
log.close
 
2)タイムスタンプ
 
・現在の時刻
Time.now
 
・下記フォーマットに変換
2014-12-20 15:36:04
Time.now.strftime("%Y-%m-%d %H:%M:%S")

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です