レスポンス データを検証する

このドキュメントでは、稼働時間チェックを構成して、チェック対象のリソースによって送信された HTTP レスポンス コードとレスポンス データを検証する方法について説明します。HTTP 稼働時間チェックは、デフォルトでレスポンス コードが 2xx であることを確認します。また、デフォルトでは、レスポンス データの検証を行いません。ただし、こうした設定は変更できます。たとえば、2xx レスポンス コードと 3xx レスポンス コードを受け入れるように HTTP 稼働時間チェックを構成できます。すべての稼働時間チェックで、稼働時間チェックを正常に行うためにレスポンス データに含める必要がある値や、含めない値を指定できます。

この機能は Google Cloud プロジェクトでのみサポートされています。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。

レスポンス データを検証する方法

Cloud Monitoring を構成して、稼働時間チェックを作成または編集するときにチェック対象リソースからのレスポンス データを検証できます。

Google Cloud コンソール

レスポンス データを検証する稼働時間チェックを作成するには、次の操作を行います。

  1. Google Cloud コンソールで、[ 稼働時間チェック] ページに移動します。

    稼働時間チェックに移動する

    このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

  2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
  3. [稼働時間チェックの作成] をクリックします。
  4. [タイトル] にタイトルを入力し、[次へ] をクリックします。
  5. ターゲットを入力して、[次へ] をクリックします。
  6. [レスポンスの検証] を構成します。

    • レスポンス データを検証するには、[コンテンツ マッチが有効] になっていることを確認し、レスポンスの検証に関連するフィールドを入力します。これらのオプションの詳細については、このドキュメントの次のセクションをご覧ください。
    • HTTP 稼働時間チェックの場合は、許容されるレスポンス コードを構成します。デフォルトでは、HTTP 稼働時間チェックで 2xx レスポンスはすべて正常なレスポンスと見なされます。
  7. [次へ] をクリックし、稼働時間チェックの構成を完了します。

Cloud Monitoring API

レスポンス データを検証するように稼働時間チェックを構成するには、UptimeCheckConfig オブジェクトの contentMatchers 配列にデータを入力します。

ContentMatcher オブジェクトには次のフィールドがあります。

  • matcher: 比較方法を記述します。値の一覧については、ContentMatcherOption をご覧ください。

    CONTENT_MATCHER_OPTION_UNSPECIFIED 値は使用しないでください。

  • content: 検索する値をレスポンス データに格納します。値は文字列リテラルまたは正規表現です。

  • jsonPathMatcher: 検索する JSONpath と、比較方法を表す JsonPathMatcher オブジェクトを保存します。

    稼働時間チェックが特定の JSONpath を検証する場合を除き、このフィールドは省略します。

このドキュメントの残りの部分では、コンテンツ マッチタイプの使用方法について説明します。

レスポンス データを検証する方法

このセクションでは、チェック対象のリソースによって送信されるレスポンスを検証するために使用できる文字列照合方法について説明します。それぞれの方法に対して、値を指定します。また、レスポンス データに含まれる値を稼働時間チェックの成功とするのか、失敗とするのかも指定します。

チェック対象リソースからのレスポンス全体が検索されない場合があります。

  • HTTP と HTTPS の稼働時間チェック: 最初の 4 MB が検索されます。
  • TCP 稼働時間チェック: 最初の 1 MB が検索されます。

リテラル部分文字列を検索する

Google Cloud コンソール

稼働時間チェックを構成してレスポンス データにリテラル部分文字列が含まれる場合に成功となるようにするには、次の設定を使用します。

  1. [Response Content match type] メニューで、[次を含む] を選択します。
  2. [Response content] フィールドにリテラル部分文字列を入力します。
  3. 構成を確認するには、[テスト] をクリックします。

レスポンス データにリテラル部分文字列が含まれている場合に稼働時間チェックが失敗となるように構成するには、次の設定を使用します。

  1. [Response Content match type] メニューで、[次を含まない] を選択します。
  2. [Response content] フィールドにリテラル部分文字列を入力します。
  3. 構成を確認するには、[テスト] をクリックします。

Cloud Monitoring API

稼働時間チェックを構成してレスポンス データにリテラル部分文字列が含まれる場合に成功となるようにするには、次の値を使用します。

...
"contentMatchers": [
    {
      "content": "Set to the string to be matched.",
      "matcher": "CONTAINS_STRING"
    }
],
...

稼働時間チェックを構成してレスポンス データにリテラル部分文字列が含まれる場合に失敗となるようにするには、次の値を使用します。

...
"contentMatchers": [
    {
      "content": "Set to the string to be matched.",
      "matcher": "NOT_CONTAINS_STRING"
    }
],
...

次の表に、さまざまなレスポンス データ、テスト文字列、テストタイプの稼働時間チェックのステータスを示します。

稼働時間チェックのステータス
レスポンス データ テスト文字列 次を含む 次を含まない
abcd abcd 成功 失敗
abc abcd 失敗 成功
abc a 成功 失敗
Uptime Checks Uptime 成功 失敗
Uptime Checks uptime 失敗 成功

上の表の「レスポンス データ」列は、チェック対象リソースから返されるデータを表し、「テスト文字列」列は文字列リテラルを表します。次の 2 つの列には、テストの種類と稼働時間チェックの結果が示されています。

正規表現を使用して検索する

Google Cloud コンソール

レスポンス データが正規表現に一致する場合に成功となる稼働時間チェックを構成するには、次の設定を使用します。

  1. [Response Content match type] メニューで、[Matches regex] を選択します。
  2. [Response content] フィールドに正規表現を入力します。
  3. 構成を確認するには、[テスト] をクリックします。

レスポンス データが正規表現と一致する場合に稼働時間チェックが失敗となるように構成するには、次の設定を使用します。

  1. [Response Content match type] メニューで、[Does not match regex] を選択します。
  2. [Response content] フィールドに正規表現を入力します。
  3. 構成を確認するには、[テスト] をクリックします。

Cloud Monitoring API

レスポンス データが正規表現に一致するときに成功となるように稼働時間チェックを構成するには、次の値を使用します。

...
"contentMatchers": [
    {
      "content": "Set to the regular expression to be matched.",
      "matcher": "MATCHES_REGEX"
    }
],
...

レスポンス データが正規表現と一致する場合に稼働時間チェックが失敗となるように構成するには、次の値を使用します。

...
"contentMatchers": [
    {
      "content": "Set to the regular expression to be matched.",
      "matcher": "NOT_MATCHES_REGEX"
    }
],
...

次の表に、さまざまなレスポンス データ、正規表現、テストタイプの稼働時間チェックのステータスを示します。

稼働時間チェックのステータス
レスポンス データ 正規表現 Matches regex Doesn't match regex
abcd abcd 成功 失敗
Uptime Checks [uU]ptime 成功 失敗
Uptime Checks [a-z]{6} 失敗 成功
Uptime Checks [a-zA-Z]{6} 成功 失敗

上の表の「レスポンス データ」列は、チェック対象リソースから返されるデータを表し、「Regex」列は正規表現を表しています。次の 2 つの列には、テストの種類と稼働時間チェックの結果が示されています。

JSON レスポンスで特定のフィールドを検索する

稼働時間チェックを構成して、JSONpath を検証できます。JSONpath のテストを選択すると、パス値が数値、文字列リテラル、または正規表現と比較されます。

JSONpath を指定する場合は、$. でルート オブジェクトを指定し、続けて特定のフィールド識別子を指定する必要があります。JSON レスポンスに要素の配列が含まれている場合は、角かっこ([])を使用して、照合する配列要素を指定します。以下の例は、パスの構文を示しています。

  • $.type は、ルート オブジェクトの type フィールドと一致します。
  • $.[0].address.city は、JSON レスポンスの最初の配列要素に格納されている address オブジェクトの city フィールドと一致します。
  • $.content[0].phone は、content フィールドの最初の配列要素の phone フィールドと一致します。content フィールドはルート オブジェクトの子です。

稼働時間チェックは、複数のフィールドに一致するように構成できます。次の JSON について考えてみましょう。

[
  {
    ...
    "address": {
      ...
      "city": "Gwenborough",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
  },
  ...
]

最初の配列要素の geo フィールドのパス全体と一致するためには、JSONpath を $.[0].address.geo に設定し、コンテンツ フィールドに完全な値を入力します。

{
  "lat": "-37.3159",
  "lng": "81.1496"
}

これらのオプションを試したい場合は、JSON レスポンスを返す公開ウェブサイトを見つけます。

JSONpath を数値または文字列リテラルと比較する

Google Cloud コンソール

稼働時間チェックを構成して、レスポンス データの特定の JSONpath が文字列リテラルと一致した場合に成功となるようにするには、次の設定を使用します。

  1. [Response content match type] メニューで、[Matches at JSONPath] を選択します。
  2. [JSONPath] フィールドにパスを入力します。
  3. [Response content] フィールドに数値または文字列リテラルを入力します。
  4. 構成を確認するには、[テスト] をクリックします。

稼働時間チェックを構成して、レスポンス データの特定の JSONpath が文字列リテラルと一致した場合に失敗となるようにするには、次の設定を使用します。

  1. [Response content match type] メニューで、[Does not match at JSONPath] を選択します。
  2. [JSONPath] フィールドにパスを入力します。
  3. [Response content] フィールドに数値または文字列リテラルを入力します。
  4. 構成を確認するには、[テスト] をクリックします。

Cloud Monitoring API

JSON 形式のレスポンスの特定のフィールドが、数値または文字列リテラルと一致する場合に成功となるように稼働時間チェックを構成するには、ContentMatcher オブジェクトに対して次の値を使用します。

...
"contentMatchers": [
    {
       "content" : "Set to a number, a boolean, or the string to be matched.",
       "matcher" : "MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "EXACT_MATCH"
    }
],
...

JSON 形式のレスポンスの特定のフィールドが数値または文字列リテラルと一致した場合に稼働時間チェックが失敗となるように構成するには、ContentMatcher オブジェクトに対して次の値を使用します。

...
"contentMatchers": [
    {
       "content" : "Set to a number, a boolean, or the string to be matched.",
       "matcher" : "NOT_MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "EXACT_MATCH"
    }
],
...

次の JSON レスポンス データを例にして、JSONpath 文字列照合テストの動作を説明します。

{
    "name": "Sample Uptime Check",
    "type": "JSONpath",
    "content": [
        {
            "id": 1,
            "phone": "1234567890",
            "alias": "Exact",
            "enabled": true,
        },
        {
            "id": 2,
            "phone": "1234512345",
            "alias": "Regex",
            "enabled": false,
        }
    ]
}

次の表は、前のレスポンスの稼働時間チェックのステータスを示しています。ただし、パス、テスト値、テストの種類は異なります。

稼働時間チェックのステータス
JSONpath テスト値 JSONpath が一致 JSONpath が一致しない
$.type "JSONpath" 成功 失敗
$.name "Sample" 失敗 成功
$.name "Sample Uptime Check" 成功 失敗
$.content[0].id 1 成功 失敗
$.content[0].alias "Exact" 成功 失敗
$.content[0].enabled true 成功 失敗

上の表で、「JSONpath」列はテストする要素を表し、「テスト値」列はその値を示しています。次の 2 つの列には、テストの種類と稼働時間チェックの結果が示されています。

JSONpath を正規表現と比較する

正規表現による一致では、文字列、数値、ブール値、null の JSON 値の照合がサポートされます。

Google Cloud コンソール

稼働時間チェックを構成して、レスポンス データの特定の JSONpath が正規表現と一致した場合に成功となるようにするには、次の設定を使用します。

  1. [Response content match type] メニューで、[Matches at JSONPath] を選択します。
  2. [JSONPath] フィールドにパスを入力します。
  3. [Response conten] フィールドに正規表現を入力します。
  4. 構成を確認するには、[テスト] をクリックします。

稼働時間チェックを構成して、レスポンス データの特定の JSONpath が正規表現と一致した場合に失敗となるようにするには、次の設定を使用します。

  1. [Response content match type] メニューで、[Does not match at JSONPath] を選択します。
  2. [JSONPath] フィールドにパスを入力します。
  3. [Response conten] フィールドに正規表現を入力します。
  4. 構成を確認するには、[テスト] をクリックします。

Cloud Monitoring API

稼働時間チェックを構成して、JSON 形式のレスポンスの特定のフィールドが正規表現と一致した場合に成功となるようにするには、ContentMatcher オブジェクトに次の値を使用します。

...
"contentMatchers": [
    {
       "content" : "Set to the regular expression to be matched."
       "matcher" : "MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "REGEX_MATCH"
    }
],
...

稼働時間チェックを構成して、JSON 形式のレスポンスの特定のフィールドが正規表現と一致した場合に失敗となるようにするには、ContentMatcher オブジェクトに次の値を使用します。

...
"contentMatchers": [
    {
       "content" : "Set to the regular expression to be matched.",
       "matcher" : "NOT_MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "REGEX_MATCH"
    }
],
...

次の JSON レスポンス データを例にして、JSONpath 正規表現テストの動作を説明します。

{
    "name": "Sample Uptime Check",
    "type": "JSONpath",
    "content": [
        {
            "id": 1,
            "phone": "1234567890",
            "alias": "Exact",
            "enabled": true,
        },
        {
            "id": 2,
            "phone": "1234512345",
            "alias": "Regex",
            "enabled": false,
        }
    ]
}

次の表は、前のレスポンスの稼働時間チェックのステータスを示しています。ただし、パス、正規表現、テストの種類は異なります。

稼働時間チェックのステータス
JSONpath 正規表現 JSONpath が正規表現と一致 JSONpath が正規表現と一致しない
$.type [A-Z]{4}Path 成功 失敗
$.name Sample 失敗 成功
$.name .*Sample.* 成功 失敗
$.content[1].id 2 成功 失敗
$.content[1].phone "[12345]{2}" 成功 失敗
$.content[1].enabled f.* 成功 失敗

上の表は、「JSONpath」列はテストする要素を示し、「正規表現」列はその値を示しています。次の 2 つの列には、テストの種類と稼働時間チェックの結果が示されています。

次のステップ