自サーバーの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") 関連記事の目次
- CentOSにcurb(ruby)をインストールする手順
- Windows7にcurb(ruby)をインストールする手順
- Windows7の環境でRubyでMySQLに接続する手順
- Ruby curbでリファラーとユーザーエージェントを設定してWebページを取得
- Windows7でruby2、open-uriを使ってWebページを取得
- Ruby open-uriでリファラーとユーザーエージェントを設定してWebページを取得
- Ruby curb、scan、gsubを使ってWebページから特定の情報を抽出
- RubyでWebサイト上のPDFファイルの情報を取得
- RubyでWebサイト上のエクセルファイルの情報を取得
- Rubyで既存のエクセルファイルにデータを追加
- RubyでWebページの応答時間を計測し、メールで通知
- Ruby curbでPOSTデータ送信
- curbでRailsアプリのクッキー、セッションIDを取得し、ログイン
- Ruby mysql2でSQLインジェクション対策
- Ruby mysql2でデータをテーブルに登録