レスポンス・コンテンツの検証(オプション)

正規表現(REGEX)を作成して、可用性モニタリングのモニターがモニターの作成時に返すことができるレスポンス文字列の内容を確認できます。

「モニターの作成」ステップ中に、オプションのチェック・ボックス(「レスポンス・コンテンツの検証」)があり、REGEXを作成してモニターが返すことができるレスポンスを検証します。

REGEXについて

  • REGEXは、モニターに指定されたURLからのレスポンス(レスポンス本文およびレスポンス・ヘッダー)のコンテンツと一致する必要があります。
  • 検索REGEXに一重引用符(')または二重引用符(")が含まれている場合は、引用符の前に次の接頭辞を付ける必要があります。
    .*,

    前述の接頭辞は、レスポンスからのJSONが適切に形成されておらず、レスポンス本文の引用符にバックスラッシュを追加する可能性がある特定のケースを処理する引用符に接頭辞が付いたエスケープ文字と一致します。

  • データのフォーマットにより、一致しようとしているレスポンスにスペースがある可能性があります。その場合は、REGEXに\s*を追加してみてください。これは、レスポンスの0個以上のスペースを処理します。
  • https://regex101.com/を使用して、レスポンス(テスト文字列)のREGEXをモニターで使用する前に検証できます。flavorでECMAScript (JavaScript)を選択します。

REGEXサンプル

  • REGEXサンプル1
    /"noOfSuccess":\s*(?!0\b)\d+/
    /.*noOfSuccess.*:\s*(?!0\b)\d+/
    レスポンス:
    {
    "mepType": "MEP00",
    "noOfAborted": 0,
    "noOfErrors": 0,
    "noOfMsgsProcessed": 46,
    "noOfMsgsReceived": 46,
    "noOfSuccess": 1,
    "successRate": 100,
    "version": "01.00.0000"
    }
  • REGEXサンプル2:
    /"server":\s*("envoy")/
    レスポンス:
    {
       "cache-control":"no-store, no-cache, must-revalidate, proxy-revalidate",
       "content-type":"text/html; charset=utf-8",
       "date":"Fri, 16 Jun 2023 07:08:49 GMT",
       "expires":"Sat, 01 Jan 2000 00:00:00 GMT",
       "pragma": "no-cache",
       "server": "envoy",
       "vary":"Accept-Encoding",
       "via":"1.1 net-idcs-config", 
       "x-content-type-options":"nosniff", 
       "x-download-options":"noopen"}

RESTモニター・タイプのREGEX

RESTモニター・タイプにREGEXバリデータを使用する場合、ユーザーはインライン・レスポンスで文字列/REGEXを検証できます。結果は、一致するか一致しないかのいずれかとして返されます。

次に、APM可用性モニタリングでサポートされている共通演算子のリストを示します:

演算子 説明
任意の文字に一致する演算子(.) ピークは、この演算子を表します。 a.bは、aで始まりbで終わる任意の3文字と一致します。
ゼロ個以上と一致する演算子(*) この演算子は、パターンと一致するように、できるだけ前の正規表現を必要な回数(ゼロを含む)繰り返します。 a*は、ゼロ個以上のaで構成される任意の文字列に一致します。別の例として、fo*は、foではなく、oを繰り返します。したがって、fo*ffofooなどに一致します。
1個以上に一致する演算子(+) この演算子はゼロ個以上に一致する演算子に似ていますが、前述の正規表現を少なくとも1回繰り返します。 ca+rは、crではなく、carおよびcaaaarと一致します。
ゼロ個または1個に一致する演算子(?) この演算子はゼロ個以上と一致する演算子に似ていますが、前述の正規表現を1回繰り返します。 ca?rは、carcrの両方に一致しますが、それ以外には一致しません。
否定(^) 式を否定します。 ^aは、a以外の任意の文字に一致します
グループ化演算子((...)) REGEXは、数学言語およびプログラミング言語がカッコ付きの式を1つの単位として処理するように、カッコ内の式を処理します。式は、カッコ外の式の前に処理されます。 f(a|b)aは、faaおよびfbaと一致します。つまり、演算a|bは、残りの演算の前に処理されます。
代替演算子(|) 選択は、正規表現の選択のいずれかに一致します: 2つの正規表現abの間に選択演算子を表す1つ以上の文字を配置すると、結果はaおよびbが一致する文字列の結合に等しくなります。

foo|bar|quuxは、foobarまたはquuxのいずれかと一致します。

別の例として、(および)はグループを開く/閉じる演算子ですが、fo(o|b)arfooarまたはfobarに一致します。これとは別に、foo|barfooまたはbarと一致します。

リスト演算子([ ... ]および[^ ... ])

一致リストは、いずれかのリスト項目で表される単一の文字と一致します。項目は、文字、文字クラス式または範囲式です。

不一致リストは、一致リストに似ていますが、いずれかのリスト項目で表されていない1つの文字に一致します。

[ab]は、aまたはbに一致します。[ad]*は、空の文字列、および任意の順序のaおよびdで構成される任意の文字列に一致します。

非一致の例として、[^ab]は、aまたはb以外の任意の文字に一致します。

範囲演算子(-) 現在の照合順序で2つの要素の間にある文字を表します。 [a-f]は、aからfまでのすべての文字(両端を含む)を表します。
数字(\d) 任意の数字(0-9)に一致します。 [0-9]と同じです。
数字以外(\D) 数字(0-9)以外の文字と一致します。 [^0-9]と同じです。
エスケープ(\) 式の次の文字が文字自体を意味し、演算子を意味しないようにします。 \.は期間を意味し、任意の文字に一致する演算子ではありません。
たとえば、パス/mybankの下位にあるmyで始まるアプリケーションのすべてのページに対するアクセスを認証済ユーザーのみに許可する場合、正規表現を使用できます:
\/mybank/my.*

ドット(.)と星(*)は、接頭辞myの後に連続するゼロ個以上の文字のシーケンスを表します。

この例では、次のURL: /mybank/myCreditsおよび/mybank/myDebitsは前述のREGEX: \/mybank/my.*と一致しますが、URL: /mybank/aboutはそれと一致しません。