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

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

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

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

Google Cloud コンソール

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

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

    [稼働時間チェック] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. [稼働時間チェックの作成] をクリックします。
  3. [タイトル] にタイトルを入力し、[次へ] をクリックします。
  4. ターゲットを入力し、[次へ] をクリックします。
  5. [レスポンスの検証] を構成します。

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

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] メニューで、[Contains] を選択します。
  2. [Response content] フィールドにリテラル部分文字列を入力します。
  3. 構成を確認するには、[Test] をクリックします。

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

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

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"
    }
],
...

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

稼働時間チェック ステータス
Response data Test string 含む Doesn't contain
abcd abcd 渡す 不合格
abc abcd 不合格 渡す
abc a 渡す 不合格
Uptime Checks Uptime 渡す 不合格
Uptime Checks uptime 不合格 渡す

上の表の [Response data] 列には、チェック対象リソースから返されるデータが示され、[Test string] 列に文字列リテラルが表示されます。次の 2 つの列には、テストのタイプと稼働時間チェックの結果を指定します。

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

Google Cloud コンソール

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

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

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

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

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"
    }
],
...

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

稼働時間チェック ステータス
Response data 正規表現 正規表現に一致する Doesn't match regex
abcd abcd 渡す 不合格
Uptime Checks [uU]ptime 渡す 不合格
Uptime Checks [a-z]{6} 不合格 渡す
Uptime Checks [a-zA-Z]{6} 渡す 不合格

上の表の [Response data] 列には、チェック対象リソースから返されるデータを示しており、[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 レスポンスを返す公開ウェブサイトを見つけます。たとえば、JSON Test をご覧ください。

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

Google Cloud コンソール

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

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

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

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

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"
    }
],
...

JSONpath 文字列照合テストの動作を説明するために、次の JSON レスポンス データを考えます。

{
    "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. 構成を確認するには、[Test] をクリックします。

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

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

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"
    }
],
...

JSONpath 正規表現テストの動作を説明するために、次の JSON レスポンス データを考えます。

{
    "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 つの列には、テストのタイプと稼働時間チェックの結果を指定します。

次のステップ