응답 데이터 검증

이 문서에서는 업타임 체크를 구성하여 검사된 리소스에서 보낸 응답 데이터와 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 업타임 체크: 처음 4MB를 검색합니다.
  • TCP 업타임 체크: 처음 1MB를 검색합니다.

리터럴 하위 문자열 검색

Google Cloud 콘솔

응답 데이터에 리터럴 하위 문자열이 포함되었으면 통과하도록 업타임 체크를 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 포함을 선택합니다.
  2. 응답 콘텐츠 필드에 리터럴 하위 문자열을 입력합니다.
  3. 구성을 확인하려면 테스트를 클릭합니다.

응답 데이터에 리터럴 하위 문자열이 포함되었으면 업타임 체크가 실패하도록 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 포함되지 않음을 선택합니다.
  2. 응답 콘텐츠 필드에 리터럴 하위 문자열을 입력합니다.
  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 실패 통과

이전 테이블에서 응답 데이터 열은 확인된 리소스에서 반환하는 데이터를 설명하고 테스트 문자열 열에는 문자열 리터럴이 나열됩니다. 다음 두 열은 테스트 유형과 업타임 체크 결과를 지정합니다.

정규 표현식을 사용하여 검색

Google Cloud 콘솔

응답 데이터가 정규 표현식과 일치할 때 통과하도록 업타임 체크를 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 정규식과 일치를 선택합니다.
  2. 응답 콘텐츠 필드에 정규 표현식을 입력합니다.
  3. 구성을 확인하려면 테스트를 클릭합니다.

응답 데이터가 정규 표현식과 일치할 때 실패하도록 업타임 체크를 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 정규식과 일치하지 않음을 선택합니다.
  2. 응답 콘텐츠 필드에 정규 표현식을 입력합니다.
  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"
    }
],
...

다음 표는 다양한 응답 데이터, 정규 표현식, 테스트 유형의 업타임 체크 상태를 보여줍니다.

업타임 체크 상태       
응답 데이터 정규 표현식 정규식과 일치 정규식과 불일치
abcd abcd 통과 실패
Uptime Checks [uU]ptime 통과 실패
Uptime Checks [a-z]{6} 실패 통과
Uptime Checks [a-zA-Z]{6} 통과 실패

이전 테이블에서 응답 데이터 열은 확인된 리소스에서 반환하는 데이터를 설명하고 정규식 열에는 정규 표현식이 나열됩니다. 다음 두 열은 테스트 유형과 업타임 체크 결과를 지정합니다.

JSON 응답의 특정 필드 검색

업타임 체크를 구성하여 JSONpath를 검증할 수 있습니다. JSONpath 테스트를 선택하면 테스트에서 경로 값을 숫자, 문자열 리터럴 또는 정규 표현식과 비교합니다.

JSONpath를 지정할 때는 루트 객체를 $.로 지정하고 특정 필드 식별자를 지정해야 합니다. JSON 응답에 요소 배열이 포함되어 있으면 대괄호 []를 사용하여 일치시킬 특정 배열 요소를 식별합니다. 다음 예시는 경로 문법을 보여줍니다.

  • $.type은 루트 객체의 type 필드와 일치합니다.
  • $.[0].address.city는 JSON 응답의 첫 번째 배열 요소에 저장된 address 객체의 city 필드와 일치합니다.
  • $.content[0].phonecontent 필드의 첫 번째 배열 요소의 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 테스트를 참조하세요.

JSONpath를 숫자 또는 문자열 리터럴과 비교

Google Cloud 콘솔

응답 데이터의 특정 JSONpath가 문자열 리터럴과 일치할 때 통과하도록 업타임 체크를 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 JSONPath에서 일치를 선택합니다.
  2. JSONPath 필드에 경로를 입력합니다.
  3. 응답 콘텐츠 필드에 숫자 또는 문자열 리터럴을 입력합니다.
  4. 구성을 확인하려면 테스트를 클릭합니다.

응답 데이터의 특정 JSONpath가 문자열 리터럴과 일치할 때 업타임 체크가 실패하도록 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 JSONPath에서 일치하지 않음을 선택합니다.
  2. JSONPath 필드에 경로를 입력합니다.
  3. 응답 콘텐츠 필드에 숫자 또는 문자열 리터럴을 입력합니다.
  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"
    }
],
...

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 열은 테스트할 요소를 식별하고 테스트 값 열에는 값이 나열됩니다. 다음 두 열은 테스트 유형과 업타임 체크 결과를 지정합니다.

JSONpath를 정규 표현식과 비교

정규 표현식 일치는 문자열, 숫자, 불리언, null JSON 값의 일치를 지원합니다.

Google Cloud 콘솔

응답 데이터의 특정 JSONpath가 정규 표현식과 일치할 때 통과하도록 업타임 체크를 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 JSONPath에서 일치를 선택합니다.
  2. JSONPath 필드에 경로를 입력합니다.
  3. 응답 콘텐츠 필드에 정규 표현식을 입력합니다.
  4. 구성을 확인하려면 테스트를 클릭합니다.

응답 데이터의 특정 JSONpath가 정규 표현식과 일치할 때 업타임 체크가 실패하도록 구성하려면 다음 설정을 사용합니다.

  1. 응답 콘텐츠 일치 유형 메뉴에서 JSONPath에서 일치하지 않음을 선택합니다.
  2. JSONPath 필드에 경로를 입력합니다.
  3. 응답 콘텐츠 필드에 정규 표현식을 입력합니다.
  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"
    }
],
...

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 열은 테스트할 요소를 식별하고 정규식 열에는 정규 표현식이 나열됩니다. 다음 두 열은 테스트 유형과 업타임 체크 결과를 지정합니다.

다음 단계