自サーバーの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でデータをテーブルに登録