Memvalidasi data respons

Dokumen ini menjelaskan cara mengonfigurasi cek uptime untuk memvalidasi kode respons HTTP dan data respons yang dikirim oleh resource yang dicentang. Secara default, cek uptime HTTP memverifikasi bahwa kode responsnya adalah 2xx. Selain itu, secara default, data respons tidak divalidasi. Namun, Anda dapat mengubah setelan ini. Misalnya, Anda dapat mengonfigurasi cek uptime HTTP untuk menerima kode respons 2xx dan 3xx. Untuk semua cek uptime, Anda dapat menentukan nilai yang harus, atau tidak boleh, berisi data respons agar cek uptime berhasil.

Cara memvalidasi data respons

Anda dapat mengonfigurasi Cloud Monitoring untuk memvalidasi data respons dari resource yang dicentang saat membuat atau mengedit cek uptime

Konsol Google Cloud

Untuk membuat cek uptime yang memvalidasi data respons, lakukan hal berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih  Uptime checks:

    Buka Cek uptime

  2. Klik Buat cek uptime.
  3. Masukkan Judul lalu klik Berikutnya.
  4. Masukkan Target, lalu klik Next.
  5. Konfigurasikan Response validation:

    • Untuk memvalidasi data respons, pastikan Pencocokan konten diaktifkan ditampilkan, lalu lengkapi kolom yang terkait dengan validasi respons. Untuk mengetahui informasi tentang opsi ini, lihat bagian berikutnya dalam dokumen ini.
    • Untuk cek uptime HTTP, konfigurasikan kode respons yang dapat diterima. Secara default, cek uptime HTTP menandai respons 2xx apa pun sebagai respons yang berhasil.
  6. Klik Next dan selesaikan konfigurasi cek uptime.

Cloud Monitoring API

Untuk mengonfigurasi cek uptime guna memvalidasi data respons, isi array contentMatchers untuk objek UptimeCheckConfig.

Objek ContentMatcher berisi kolom berikut:

  • matcher: Menjelaskan cara perbandingan dilakukan. Untuk mengetahui daftar nilai, lihat ContentMatcherOption.

    Jangan gunakan nilai CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: Menyimpan nilai yang akan ditelusuri dalam data respons. Nilainya adalah literal string atau ekspresi reguler.

  • jsonPathMatcher: Menyimpan objek JsonPathMatcher yang menjelaskan JSONpath mana yang akan ditelusuri dan cara melakukan perbandingannya.

    Hapus kolom ini kecuali jika cek uptime memvalidasi JSONpath tertentu.

Bagian selanjutnya dari dokumen ini menjelaskan cara menggunakan opsi pencocokan konten.

Opsi untuk memvalidasi data respons

Bagian ini menjelaskan strategi pencocokan string yang dapat Anda gunakan untuk memvalidasi respons yang dikirim oleh resource yang dicentang. Untuk setiap strategi, Anda menentukan nilai dan apakah menemukan nilai tersebut dalam data respons akan menghasilkan cek uptime yang lulus atau gagal.

Seluruh respons dari resource yang dicentang mungkin tidak ditelusuri:

  • Cek uptime HTTP dan HTTPS: 4 MB pertama akan ditelusuri.
  • Cek uptime TCP: 1 MB pertama ditelusuri.

Mencari substring literal

Konsol Google Cloud

Untuk mengonfigurasi cek uptime yang akan diteruskan saat data respons berisi substring literal, gunakan setelan berikut:

  1. Pilih Berisi di menu Jenis pencocokan konten respons.
  2. Masukkan substring literal di kolom Response content.
  3. Untuk memverifikasi konfigurasi, klik Test.

Untuk mengonfigurasi cek uptime yang gagal saat data respons berisi substring literal, gunakan setelan berikut:

  1. Pilih Tidak berisi di menu Jenis pencocokan konten respons.
  2. Masukkan substring literal di kolom Response content.
  3. Untuk memverifikasi konfigurasi, klik Test.

Cloud Monitoring API

Untuk mengonfigurasi cek uptime yang lulus saat data respons berisi substring literal, gunakan nilai berikut:

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

Untuk mengonfigurasi cek uptime yang gagal saat data respons berisi substring literal, gunakan nilai berikut:

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

Tabel berikut menampilkan status cek uptime untuk berbagai data respons, string pengujian, dan jenis pengujian:

Status cek uptime       
Data respons String pengujian Berisi Tidak berisi
abcd abcd berhasil gagal
abc abcd gagal berhasil
abc a berhasil gagal
Uptime Checks Uptime berhasil gagal
Uptime Checks uptime gagal berhasil

Pada tabel sebelumnya, kolom Data respons menjelaskan data yang ditampilkan oleh resource yang dicentang, sedangkan kolom Test string mencantumkan literal string. Dua kolom berikutnya menentukan jenis pengujian dan hasil cek uptime.

Menelusuri menggunakan ekspresi reguler

Konsol Google Cloud

Untuk mengonfigurasi cek uptime yang lulus saat data respons cocok dengan ekspresi reguler, gunakan setelan berikut:

  1. Pilih Cocok dengan ekspresi reguler di menu Jenis pencocokan konten respons.
  2. Masukkan ekspresi reguler di kolom Response content.
  3. Untuk memverifikasi konfigurasi, klik Test.

Untuk mengonfigurasi cek uptime agar gagal saat data respons cocok dengan ekspresi reguler, gunakan setelan berikut:

  1. Pilih Tidak cocok dengan ekspresi reguler di menu Jenis pencocokan konten respons.
  2. Masukkan ekspresi reguler di kolom Response content.
  3. Untuk memverifikasi konfigurasi, klik Test.

Cloud Monitoring API

Untuk mengonfigurasi cek uptime yang lulus saat data respons cocok dengan ekspresi reguler, gunakan nilai berikut:

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

Untuk mengonfigurasi cek uptime yang gagal saat data respons cocok dengan ekspresi reguler, gunakan nilai berikut:

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

Tabel berikut menampilkan status cek uptime untuk berbagai data respons, ekspresi reguler, dan jenis pengujian:

Status cek uptime       
Data respons Regex Cocok dengan ekspresi reguler Tidak cocok dengan regex
abcd abcd berhasil gagal
Uptime Checks [uU]ptime berhasil gagal
Uptime Checks [a-z]{6} gagal berhasil
Uptime Checks [a-zA-Z]{6} berhasil gagal

Dalam tabel sebelumnya, kolom Data respons menjelaskan data yang ditampilkan oleh resource yang dicentang, sedangkan kolom Regex mencantumkan ekspresi reguler. Dua kolom berikutnya menentukan jenis pengujian dan hasil cek uptime.

Menelusuri kolom tertentu dalam respons JSON

Anda dapat mengonfigurasi cek uptime untuk memvalidasi JSONpath. Saat Anda memilih pengujian JSONpath, pengujian tersebut akan membandingkan nilai jalur dengan angka, literal string, atau ekspresi reguler:

Saat menentukan JSONpath, Anda harus menentukan objek root dengan $., lalu mengikutinya dengan ID kolom spesifik. Jika respons JSON berisi array elemen, gunakan tanda kurung, [], untuk mengidentifikasi elemen array tertentu yang akan dicocokkan. Contoh berikut menggambarkan sintaksis jalur:

  • $.type cocok dengan kolom type dari objek root.
  • $.[0].address.city cocok dengan kolom city di objek address yang disimpan di elemen array pertama respons JSON.
  • $.content[0].phone cocok dengan kolom phone dari elemen array pertama kolom content. Kolom content adalah turunan dari objek root.

Anda dapat mengonfigurasi pengujian waktu beroperasi agar cocok dengan beberapa kolom. Pertimbangkan JSON berikut:

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

Untuk mencocokkan seluruh jalur kolom geo di elemen array pertama, tetapkan JSONpath ke $.[0].address.geo, lalu masukkan nilai lengkap di kolom konten:

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

Jika Anda tertarik untuk bereksperimen dengan opsi ini, temukan situs publik yang menampilkan respons JSON. Misalnya, lihat Pengujian JSON.

Membandingkan JSONpath dengan angka atau literal string

Konsol Google Cloud

Untuk mengonfigurasi cek uptime yang akan diteruskan saat JSONpath tertentu dalam data respons cocok dengan literal string, gunakan setelan berikut:

  1. Pilih Matches at JSONPath di menu Response content match type.
  2. Masukkan jalur di kolom JSONPath.
  3. Masukkan angka atau literal string di kolom Response content.
  4. Untuk memverifikasi konfigurasi, klik Test.

Untuk mengonfigurasi cek uptime yang gagal saat JSONpath tertentu dalam data respons cocok dengan literal string, gunakan setelan berikut:

  1. Pilih Tidak cocok di JSONPath di menu Jenis pencocokan konten respons.
  2. Masukkan jalur di kolom JSONPath.
  3. Masukkan angka atau literal string di kolom Response content.
  4. Untuk memverifikasi konfigurasi, klik Test.

Cloud Monitoring API

Untuk mengonfigurasi cek uptime yang akan diteruskan saat kolom tertentu dalam respons berformat JSON cocok dengan angka atau literal string, gunakan nilai berikut untuk objek 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"
    }
],
...

Untuk mengonfigurasi cek uptime yang gagal saat kolom tertentu dalam respons berformat JSON cocok dengan angka atau literal string, gunakan nilai berikut untuk objek 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"
    }
],
...

Untuk menggambarkan cara kerja pengujian pencocokan string JSONpath, pertimbangkan data respons JSON berikut:

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

Tabel berikut menampilkan status cek uptime dari respons sebelumnya, tetapi untuk jalur, nilai pengujian, dan jenis pengujian yang berbeda:

Status cek uptime       
JSONpath Nilai pengujian Kecocokan JSONpath JSONpath tidak cocok
$.type "JSONpath" berhasil gagal
$.name "Sample" gagal berhasil
$.name "Sample Uptime Check" berhasil gagal
$.content[0].id 1 berhasil gagal
$.content[0].alias "Exact" berhasil gagal
$.content[0].enabled true berhasil gagal

Pada tabel sebelumnya, kolom JSONpath mengidentifikasi elemen yang akan diuji dan kolom Nilai pengujian mencantumkan nilai. Dua kolom berikutnya menentukan jenis pengujian dan hasil cek uptime

Membandingkan JSONpath dengan ekspresi reguler

Pencocokan ekspresi reguler mendukung pencocokan string, angka, boolean, dan nilai JSON null.

Konsol Google Cloud

Untuk mengonfigurasi cek uptime yang lulus saat JSONpath tertentu dalam data respons cocok dengan ekspresi reguler, gunakan setelan berikut:

  1. Pilih Matches at JSONPath di menu Response content match type.
  2. Masukkan jalur di kolom JSONPath.
  3. Masukkan ekspresi reguler di kolom Response content.
  4. Untuk memverifikasi konfigurasi, klik Test.

Untuk mengonfigurasi cek uptime agar gagal saat JSONpath tertentu dalam data respons cocok dengan ekspresi reguler, gunakan setelan berikut:

  1. Pilih Tidak cocok di JSONPath di menu Jenis pencocokan konten respons.
  2. Masukkan jalur di kolom JSONPath.
  3. Masukkan ekspresi reguler di kolom Response content.
  4. Untuk memverifikasi konfigurasi, klik Test.

Cloud Monitoring API

Untuk mengonfigurasi cek uptime yang akan diteruskan saat kolom tertentu dalam respons berformat JSON cocok dengan ekspresi reguler, gunakan nilai berikut untuk objek ContentMatcher:

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

Untuk mengonfigurasi cek uptime yang gagal saat kolom tertentu dalam respons berformat JSON cocok dengan ekspresi reguler, gunakan nilai berikut untuk objek 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"
    }
],
...

Untuk menggambarkan cara kerja pengujian ekspresi reguler JSONpath, pertimbangkan data respons JSON berikut:

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

Tabel berikut menampilkan status cek uptime dari respons sebelumnya, tetapi untuk jalur, ekspresi reguler, dan jenis pengujian yang berbeda:

Status cek uptime       
JSONpath Regex JSONpath cocok dengan ekspresi reguler JSONpath tidak cocok dengan ekspresi reguler
$.type [A-Z]{4}Path berhasil gagal
$.name Sample gagal berhasil
$.name .*Sample.* berhasil gagal
$.content[1].id 2 berhasil gagal
$.content[1].phone "[12345]{2}" berhasil gagal
$.content[1].enabled f.* berhasil gagal

Pada tabel sebelumnya, kolom JSONpath mengidentifikasi elemen yang akan diuji dan kolom Regex mencantumkan ekspresi reguler. Dua kolom berikutnya menentukan jenis pengujian dan hasil cek uptime

Langkah selanjutnya