Groovyスクリプトを介した内部Webチェックの実行
最終更新日: 20 年 2023 月 XNUMX 日概要
内部Webチェックの設定フィールド構成に加えて、Groovyスクリプトを使用してチェックを実行し、HTTPデータを収集して処理することもできます。 スクリプト化されたWebチェックはより柔軟になる傾向があり、動的トークンを使用したフォームベース認証を使用するサイトで特に役立ちます。
Groovyスクリプトを介して実行されるWebチェックには、少なくともXNUMXつのステップがあり、これには ステップリクエスト スクリプトと ステップ応答 プロセッサ。 スクリプト化されたチェックをユニークにするのは、ステップ間でコンテキスト(つまり、認証用の動的トークン)を共有する機能です。 このようにして、ステップXNUMXはGETリクエストを送信して、サイトの認証トークンを収集し、ステップXNUMXでトークンを共有します。これにより、サイトが認証されます。
内部Webチェックを作成または編集すると、[要求]セクションと[応答]セクションの両方で[スクリプト]というタイトルの追加のタブを使用できることがわかります。 リクエストとレスポンスのGroovyスクリプトを、これらの両方の[スクリプト]タブにあるテキストボックスに直接手動で追加するか、次に示すように、[設定]タブのフィールドに最初に入力することを選択できます(例: HTTPバージョン, 方法, リダイレクトに従う, 認証が必要です, ヘッダ, HTTP応答形式など)をクリックしてから、 設定からスクリプトを生成する ボタンをクリックすると、LogicMonitorは、これらの設定に基づいて要求および応答スクリプトを自動生成します。 後者のオプションは、Groovyスクリプトの基本的なテンプレートを生成します。 (HTTP要求と応答の両方について、[設定]タブにあるフィールドに入力する方法の詳細については、を参照してください。 Webチェックの追加).
リクエストスクリプトの作成
リクエストスクリプトはGroovyAPIを使用してHTTPレスポンスを取得します。
リクエストGroovyスクリプトのAPIコマンド
次の表に、リクエストGroovyスクリプトで使用できるAPIコマンドを示します。
API | 戻り型 | 説明 | デフォルト値(該当する場合) |
setAuthType(AuthType authType) | LMリクエスト | 認証タイプを設定する | |
setUsername(String username) | LMリクエスト | 認証ユーザー名を設定します | |
setPassword(String password) | LMリクエスト | 認証パスワードを設定する | |
setDomain(String domain) | LMリクエスト | 認証ドメインを設定します(NTLM認証の場合のみ) | |
followRedirect(boolean) | LMリクエスト | リダイレクトに従う必要があるかどうかを指定します | ◯ |
addHeader(文字列名、文字列値) | LMリクエスト | HTTPヘッダーを追加します | |
userHttp1_0() | LMリクエスト | HTTP /1.0プロトコルバージョンを使用するかどうかを指定します | × |
userHttp1_1() | LMリクエスト | HTTP /1.1プロトコルバージョンを使用するかどうかを指定します | ◯ |
needFullpageLoad() | LMリクエスト | ページ全体をロードする必要があるかどうかを指定します | × |
setContext(文字列名、オブジェクト値) | LMHttpClientComment | 次のスクリプトのコンテキストを設定します | |
getContext(文字列名) | オブジェクト | 以前のスクリプトのコンテキストを取得します | |
request(LMRequest) | LMHttpClientComment | HTTPリクエストパラメータを設定します | |
取得する() | StatusCode | リクエストとリターンのステータスを取得します。 | |
get(URL) | StatusCode | リクエストとリターンのステータスを取得します。 | |
頭() | StatusCode | URLが存在するかどうかを確認します | |
post(URL、PostDataType、String PostData) | StatusCode | HTTPデータを投稿する | |
setProxy(String hostname、int port、String schema) | LMリクエスト | HTTPプロキシを設定します。 スキーマはHTTPまたはHTTPSのみにすることができます | |
setProxy(String hostname、int port、String schema、String proxyUsername、String proxyPassword) | LMリクエスト | 資格情報とともにHTTPプロキシを設定します。 |
リクエストスクリプトコマンドの例
- 次のGroovy構文は、基本認証を使用するサイトの内部Webチェックの最初のステップで使用されます。
import com.logicmonitor.service.groovyapi.AuthType; import com.logicmonitor.service.groovyapi.LMRequest; LMRequest request = new LMRequest(); request.setAuthType(AuthType.BASIC) .setUsername("username") .setPassword("password") .followRedirect(false) .useHttp1_0() .needFullpageLoad(true); String jsonData = "{\"name\": \"value\"}" return LMHttpClient.request(request) .post(JSON, jsonData);
- 例 setContext() 応答:
StatusCode status = LMResponse.statusMatch(200); LMResponse.setContext("body", Response.getBody()); return status;
- 例 getContext() 応答:
return LMResponse.plainTextmatch(Response.getContext("exampletext"))
- 例 post(PostDataType、String PostData)応答:
import static com.logicmonitor.service.groovyapi.StatusCode.*; import static com.logicmonitor.service.groovyapi.PostDataType.*; String jsonData = "{\"name\": \"value\"}"; return LMHttpClient.post(JSON, jsonData);
- 例 request(LMRequest) 応答:
import com.logicmonitor.service.groovyapi.AuthType; import com.logicmonitor.service.groovyapi.LMRequest; LMRequest request = new LMRequest(); request.setAuthType(AuthType.BASIC) .setUsername("username") .setPassword("password") .followRedirect(false) .useHttp1_0() .needLoadFullPage(false); String jsonData = "{\"name\": \"value\"}" return LMHttpClient.request(request) .post(JSON, jsonData);
応答スクリプトの作成
応答スクリプトは、要求スクリプトからのHTTP応答を解析し、後処理メソッドを適用します(たとえば、ステータスの確認、HTTP応答本文の確認など)。
次の表に、リクエストGroovyスクリプトで使用できるAPI呼び出しを示します。
APIコマンド | 戻り型 | 説明 |
getStatus() | 整数 | HTTPステータスコードを返す |
getReasonPhase() | 文字列 | HTTP理由フェーズに戻る |
getProtocolVersion() | 文字列 | HTTPプロトコルバージョンを返す |
getHeaders() | マップ(文字列、リスト[文字列]) | すべてのヘッダーを返す |
getHeader(文字列名) | リスト | 名前付きのヘッダー値を返します。 ヘッダーが存在しない場合、「null」応答が返されます。 名前では大文字と小文字が区別されることに注意してください |
getBody() | 文字列 | HTTP応答本文を返す |
statusMatch(intが期待されます) | StatusCode | ステータスが期待どおりかどうかを確認します。 その場合、これはSTATUS_OKを返します。 それ以外の場合は、STATUS_STATUS_MISMATCHを返します |
regexMatch(文字列パターン) | StatusCode | 正規表現パターンがHTTP応答本文と一致するかどうかを確認します。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
globMatch(文字列パターン) | StatusCode | 正規表現パターンがHTTP応答本文と一致するかどうかを確認します。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
plainTextMatch(文字列パターン) | StatusCode | HTTP応答本文にプレーンテキストが含まれているかどうかを確認します。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
jsonMatch(文字列パス、文字列expectValue) | StatusCode | パスのJSON結果が期待値と一致するかどうかを確認します。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
PathMatch(文字列パス、文字列expectValue) | StatusCode | 文字列のパスが期待値と一致するかどうかを確認してください。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
keyValueMatch(文字列キー、文字列expectValue) | StatusCode | 返されたキー/値が期待値と一致するかどうかを確認します。 失敗した場合は、STATUS_CONTENTS_MISMATCHを返します |
setContext(文字列名、オブジェクト値) | ボイド | スクリプトの次の段階のコンテキストを設定します |
getContext(String) | オブジェクト | 前のスクリプトステージで設定されたコンテキストを返します |
応答スクリプトの例
サイトの応答ステータスが「302」であることを確認する場合は、次のリクエストを使用してください。
import com.logicmonitor.service.groovyapi.LMRequest;
LMRequest request = new LMRequest();
return LMHttpClient.request(request.followRedirect(false)
.get());
応答スクリプトは次のように記述します。
return LMResponse.statusMatch(302);
ステータスコード
Code | 値 | 説明 |
ステータス_OK | 1 | データ収集は期待どおりに機能しました |
STATUS_MISMATCH | 11 | HTTP応答ステータスが一致しません |
STATUS_CONTENTS_MISMATCH | 12 | HTTPリクエストが予期されたHTTPレスポンス本文を返しませんでした |
完全なサンプルスクリプト
以下は、メッセージングサービスの可用性を確認するために使用される完全なXNUMXステップのスクリプトです。 この特定のスクリプトは、内部WebチェックのステップXNUMXとXNUMXの間で共有される動的トークンを使用します。 セットコンテキスト • getContext サイトへの認証のためのコマンド。 後処理メソッドは、サイトの可用性を確認する手段として、HTTP応答内の「ようこそ」の存在を探します。