HTTP監視(シナリオ)をやってみた
投稿日: / 更新日:
こんにちは。
Hinemosには、Webページが正常に稼働しているかどうかを監視する”HTTP監視”の一種として、HTTP監視(シナリオ)があります。
※ HTTP監視(シナリオ)とは、
マニュアルより
単一のURLではなく、複数のURLに順番にアクセスすることにより、 監視対象に想定されるアクセスが
想定されるアクセスが行なわれた際に正しく応答を返せるかを監視します。
各URLにアクセスした際のステータスコードおよびHTTPレスポンスの内容の文字列判定により、 重要度を設定できます。
これらの、URLのリストと各URLのHTTPレスポンス内容の文字列判定をまとめたものをシナリオと呼びます。
せっかくなので、単純にWebページを遷移させるのではなく、ログイン処理を挟んだWebページ遷移の監視を行ってみようと思います。
具体的な目的としては、下記のWebページでログインを行い、
ログイン後に遷移する次のWebページにたどり着くことです。
ついでに、最初のページに接続する際にBASIC認証も突破します。
さて、マニュアルを片手にHTTP監視(シナリオ)の監視設定を作っていきます。
設定を埋め埋め…
※ ユーザ名やパスワードはセキュリティの都合上、マスクしてます。
次にページを作成!… したいところですが、先にログイン時に必要となる情報(POSTで渡さなければならない情報)を確認します。
ログイン用のページのソースコード
<div id=”login-form”>
<form accept-charset=”UTF-8″ action=”/login” method=”post”>utf8″ type=”hidden” value=”✓” /><input name=”back_url” type=”hidden” value=”https://redmine.xxxxxxx/my/page” />
<table>
<tr>
<td style=”text-align:right;”><label for=”username”>ログイン:</label></td>
<td style=”text-align:left;”><input id=”username” name=”username” tabindex=”1″ type=”text” /></td>
</tr>
<tr>
<td style=”text-align:right;”><label for=”password”>パスワード:</label></td>
<td style=”text-align:left;”><input id=”password” name=”password” tabindex=”2″ type=”password” /></td>
</tr>
上記を見る限り、下記5つの値をPOSTで渡すようです。
- utf8
- authenticity_token
- back_url
- username
- password
“utf8″と”back_url”は、Webページ側で固定値が与えられているようなので、特に監視設定側で指定する必要はなさそうです。
“authenticity_token”は、セッション毎にランダムで生成されるようなので、監視設定側で指定する必要がありそうです。
“username”と”password”も監視設定側で指定する必要がありますね。
以上を踏まえると、”authenticity_token“、”username“、”password“の値をPOSTで渡す必要があるようです。
それでは、ページの作成に入りたいと思います。
ページの構成としては以下の通りです。
- POSTで渡す値を設定するためのダミーページ
- ログイン処理を行うためのページ
- ログイン後のWebページを監視するためのページ
1ページ目
POSTで渡す値を設定するため、「次ページより利用可能な変数」の設定を行います。
authenticity_tokenを「ページチェック設定」のURL欄に指定したWebページから取得して、POSTで渡すように設定します。
ページから取得する場合、「次ページより利用可能な変数」の値欄には、
Webページからのレスポンスボディに含まれるauthenticity_tokenの値を、正規表現で入力します。
今回は次のように設定しました。
.*authenticity_token” type=”hidden” value=”(.*?)”.*
2ページ目
WebページにPOSTで渡す値を、「ページチェック設定」のPOST欄に設定します。
3ページ目
ログイン後に遷移するWebページを監視するような設定を行います。
ページの作成が終わったら、これでHTTP監視(シナリオ)の監視設定は作成完了です。
さて、監視結果を見てみたいと思います。
無事、監視に成功したようです。
HTTP監視(文字列)やHTTP監視(数値)と比較すると、POSTで渡す値を調査する必要があったりと設定が大変ですが、
その分、できることが増えてますので、是非試してみてください。