Groovyスクリプトを介した内部Webチェックの実行

最終更新日: 20 年 2023 月 XNUMX 日

概要

内部Webチェックの設定フィールド構成に加えて、Groovyスクリプトを使用してチェックを実行し、HTTPデータを収集して処理することもできます。 スクリプト化されたWebチェックはより柔軟になる傾向があり、動的トークンを使用したフォームベース認証を使用するサイトで特に役立ちます。

Groovyスクリプトを介して実行されるWebチェックには、少なくともXNUMXつのステップがあり、これには ステップリクエスト スクリプトと ステップ応答 プロセッサ。 スクリプト化されたチェックをユニークにするのは、ステップ間でコンテキスト(つまり、認証用の動的トークン)を共有する機能です。 このようにして、ステップXNUMXはGETリクエストを送信して、サイトの認証トークンを収集し、ステップXNUMXでトークンを共有します。これにより、サイトが認証されます。

内部Webチェックを作成または編集すると、[要求]セクションと[応答]セクションの両方で[スクリプト]というタイトルの追加のタブを使用できることがわかります。 リクエストとレスポンスのGroovyスクリプトを、これらの両方の[スクリプト]タブにあるテキストボックスに直接手動で追加するか、次に示すように、[設定]タブのフィールドに最初に入力することを選択できます(例: HTTPバージョン, 方法, リダイレクトに従う, 認証が必要です, ヘッダ, HTTP応答形式など)をクリックしてから、 設定からスクリプトを生成する ボタンをクリックすると、LogicMonitorは、これらの設定に基づいて要求および応答スクリプトを自動生成します。 後者のオプションは、Groovyスクリプトの基本的なテンプレートを生成します。 (HTTP要求と応答の両方について、[設定]タブにあるフィールドに入力する方法の詳細については、を参照してください。 Webチェックの追加).

スクリプト化された内部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応答内の「ようこそ」の存在を探します。

完全なサンプルスクリプト

記事上で