Convalida dati risposta

Questo documento descrive come configurare un controllo di uptime per convalidare il codice di risposta HTTP e i dati di risposta inviati da una risorsa selezionata. Per impostazione predefinita, i controlli di uptime HTTP verificano che il codice di risposta sia 2xx. Inoltre, per impostazione predefinita, i dati di risposta non vengono convalidati. Tuttavia, puoi modificare queste impostazioni. Ad esempio, puoi configurare un controllo di uptime HTTP per accettare i codici di risposta 2xx e 3xx. Per tutti i controlli di uptime, puoi specificare un valore che i dati di risposta devono o meno contenere affinché i controlli di uptime abbiano esito positivo.

Come convalidare i dati delle risposte

Puoi configurare Cloud Monitoring per convalidare i dati di risposta da una risorsa selezionata quando crei o modifichi un controllo di uptime.

Console Google Cloud

Per creare un controllo di uptime che convalidi i dati della risposta:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring, quindi  Controlli di uptime:

    Vai a Controlli di uptime

  2. Fai clic su Crea controllo di uptime.
  3. Inserisci un Titolo e fai clic su Avanti.
  4. Inserisci il Target e fai clic su Avanti.
  5. Configura la convalida della risposta:

    • Per convalidare i dati della risposta, assicurati che sia visualizzata Corrispondenza dei contenuti abilitata, quindi completa i campi relativi alla convalida della risposta. Per informazioni su queste opzioni, consulta la sezione successiva di questo documento.
    • Per i controlli di uptime HTTP, configura i codici di risposta accettabili. Per impostazione predefinita, i controlli di uptime HTTP contrassegnano qualsiasi risposta 2xx come risposta riuscita.
  6. Fai clic su Avanti e completa la configurazione del controllo di uptime.

API Cloud Monitoring

Per configurare un controllo di uptime per convalidare i dati di risposta, compila l'array contentMatchers dell'oggetto UptimeCheckConfig.

Gli oggetti ContentMatcher contengono i seguenti campi:

  • matcher: descrive il modo in cui viene eseguito il confronto. Per un elenco dei valori, vedi ContentMatcherOption.

    Non utilizzare il valore CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: memorizza il valore da ricercare nei dati di risposta. Il valore è un valore letterale stringa o un'espressione regolare.

  • jsonPathMatcher: archivia un oggetto JsonPathMatcher che descrive quale percorso JSON cercare e come eseguire il confronto.

    Ometti questo campo a meno che il controllo di uptime non convalida un JSONpath specifico.

Nella parte restante di questo documento viene descritto come utilizzare le opzioni di corrispondenza dei contenuti.

Opzioni per convalidare i dati di risposta

Questa sezione descrive le strategie di corrispondenza delle stringhe che puoi utilizzare per convalidare la risposta inviata da una risorsa selezionata. Per ogni strategia, specifichi un valore e stabilisci se trovarlo nei dati di risposta comporta il superamento o l'esito negativo del controllo di uptime.

La ricerca potrebbe non essere eseguita nell'intera risposta da una risorsa selezionata:

  • Controlli di uptime HTTP e HTTPS: vengono cercati i primi 4 MB.
  • Controlli di uptime TCP: la ricerca viene effettuata nel primo MB.

Cerca una sottostringa letterale

Console Google Cloud

Per configurare il controllo di uptime da eseguire quando i dati della risposta contengono una sottostringa letterale, utilizza le seguenti impostazioni:

  1. Seleziona Contiene nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci la sottostringa del valore letterale nel campo Contenuto della risposta.
  3. Per verificare la configurazione, fai clic su Test.

Per configurare il controllo di uptime in modo che non vada a buon fine quando i dati della risposta contengono una sottostringa letterale, utilizza le seguenti impostazioni:

  1. Seleziona Non contiene nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci la sottostringa del valore letterale nel campo Contenuto della risposta.
  3. Per verificare la configurazione, fai clic su Test.

API Cloud Monitoring

Per configurare il controllo di uptime da eseguire quando i dati della risposta contengono una sottostringa letterale, utilizza i valori seguenti:

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

Per configurare il controllo di uptime in modo che non vada a buon fine quando i dati della risposta contengono una sottostringa letterale, utilizza i valori seguenti:

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

La seguente tabella mostra lo stato del controllo di uptime per dati di risposta, stringhe di test e tipi di test diversi:

Stato dei controlli di uptime       
Dati delle risposte Stringa di test Contiene Non contiene
abcd abcd superata non superata
abc abcd non superata superata
abc a superata non superata
Uptime Checks Uptime superata non superata
Uptime Checks uptime non superata superata

Nella tabella precedente, la colonna Dati risposta descrive i dati restituiti dalla risorsa selezionata, mentre la colonna Stringa di test elenca il valore letterale stringa. Le due colonne successive specificano il tipo di test e il risultato del controllo di uptime.

Cerca utilizzando un'espressione regolare

Console Google Cloud

Per configurare il controllo di uptime da eseguire quando i dati di risposta corrispondono a un'espressione regolare, utilizza le seguenti impostazioni:

  1. Seleziona Corrisponde alla regex nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci un'espressione regolare nel campo Contenuto della risposta.
  3. Per verificare la configurazione, fai clic su Test.

Per configurare il controllo di uptime in modo che abbia esito negativo quando i dati di risposta corrispondono a un'espressione regolare, utilizza le impostazioni seguenti:

  1. Seleziona Non corrisponde alla regex nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci un'espressione regolare nel campo Contenuto della risposta.
  3. Per verificare la configurazione, fai clic su Test.

API Cloud Monitoring

Per configurare il controllo di uptime da eseguire quando i dati di risposta corrispondono a un'espressione regolare, utilizza i valori seguenti:

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

Per configurare il controllo di uptime in modo che non vada a buon fine quando i dati di risposta corrispondono a un'espressione regolare, utilizza i valori seguenti:

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

La tabella seguente mostra lo stato del controllo di uptime per dati di risposta, espressioni regolari e tipi di test diversi:

Stato dei controlli di uptime       
Dati delle risposte Espressione regolare Corrisponde a espressione regolare Non corrisponde alla regex
abcd abcd superata non superata
Uptime Checks [uU]ptime superata non superata
Uptime Checks [a-z]{6} non superata superata
Uptime Checks [a-zA-Z]{6} superata non superata

Nella tabella precedente, la colonna Dati risposta descrive i dati restituiti dalla risorsa selezionata, mentre la colonna Regex elenca l'espressione regolare. Le due colonne successive specificano il tipo di test e il risultato del controllo di uptime.

Cercare un campo specifico in una risposta JSON

Puoi configurare un controllo di uptime per convalidare un JSONpath. Quando selezioni un test JSONpath, il test confronta un valore del percorso con un numero, un valore letterale stringa o un'espressione regolare:

Quando specifichi un JSONpath, devi specificare l'oggetto principale con $. e seguirlo con un identificatore di campo specifico. Quando la risposta JSON contiene un array di elementi, utilizza le parentesi, [], per identificare l'elemento array specifico da abbinare. I seguenti esempi illustrano la sintassi del percorso:

  • $.type corrisponde al campo type di un oggetto principale.
  • $.[0].address.city corrisponde al campo city nell'oggetto address archiviato nel primo elemento array della risposta JSON.
  • $.content[0].phone corrisponde al campo phone del primo elemento array del campo content. Il campo content è un elemento secondario dell'oggetto principale.

Puoi configurare un test di uptime in modo che corrisponda a più campi. Considera il seguente JSON:

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

Per trovare la corrispondenza con l'intero percorso del campo geo nel primo elemento dell'array, imposta il JSONpath su $.[0].address.geo e inserisci il valore completo nel campo Content:

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

Se ti interessa sperimentare queste opzioni, trova un sito web pubblico che restituisca una risposta JSON. Ad esempio, consulta la pagina JSON Test.

Confronta JSONpath con un numero o un valore letterale stringa

Console Google Cloud

Per configurare il controllo di uptime in modo che venga superato quando un percorso JSON specifico nei dati della risposta corrisponde a un valore letterale stringa, utilizza le impostazioni seguenti:

  1. Seleziona Corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci il percorso nel campo JSONPath.
  3. Inserisci il numero o il valore letterale stringa nel campo Contenuto della risposta.
  4. Per verificare la configurazione, fai clic su Test.

Per configurare il controllo di uptime in modo che non vada a buon fine quando un percorso JSON specifico nei dati della risposta corrisponde a un valore letterale stringa, utilizza le impostazioni seguenti:

  1. Seleziona Non corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci il percorso nel campo JSONPath.
  3. Inserisci il numero o il valore letterale stringa nel campo Contenuto della risposta.
  4. Per verificare la configurazione, fai clic su Test.

API Cloud Monitoring

Per configurare il controllo di uptime in modo che venga superato quando un campo specifico nella risposta in formato JSON corrisponde a un numero o a un valore letterale stringa, utilizza i seguenti valori per l'oggetto 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"
    }
],
...

Per fare in modo che il controllo di uptime non vada a buon fine quando un campo specifico nella risposta in formato JSON corrisponde a un numero o a un valore letterale stringa, utilizza i seguenti valori per l'oggetto 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"
    }
],
...

Per illustrare come funzionano i test di corrispondenza delle stringhe JSONpath, considera i seguenti dati di risposta JSON:

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

La seguente tabella mostra lo stato del controllo di uptime della risposta precedente, ma per percorsi, valori di test e tipi di test diversi:

Stato dei controlli di uptime       
JSONpath Valore test Corrispondenze JSONpath JSONpath non corrisponde
$.type "JSONpath" superata non superata
$.name "Sample" non superata superata
$.name "Sample Uptime Check" superata non superata
$.content[0].id 1 superata non superata
$.content[0].alias "Exact" superata non superata
$.content[0].enabled true superata non superata

Nella tabella precedente, la colonna JSONpath identifica l'elemento da testare, mentre la colonna Valore di test elenca il valore. Le due colonne successive specificano il tipo di test e il risultato del controllo di uptime.

Confronta JSONpath con un'espressione regolare

Le corrispondenze dell'espressione regolare supportano la corrispondenza di una stringa, un numero, un valore booleano e valori JSON null.

Console Google Cloud

Per configurare il controllo di uptime in modo che venga superato quando un percorso JSON specifico nei dati della risposta corrisponde a un'espressione regolare, utilizza le impostazioni seguenti:

  1. Seleziona Corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci il percorso nel campo JSONPath.
  3. Inserisci l'espressione regolare nel campo Contenuto della risposta.
  4. Per verificare la configurazione, fai clic su Test.

Per configurare il controllo di uptime in modo che non vada a buon fine quando un percorso JSON specifico nei dati della risposta corrisponde a un'espressione regolare, utilizza le impostazioni seguenti:

  1. Seleziona Non corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
  2. Inserisci il percorso nel campo JSONPath.
  3. Inserisci l'espressione regolare nel campo Contenuto della risposta.
  4. Per verificare la configurazione, fai clic su Test.

API Cloud Monitoring

Per configurare il controllo di uptime in modo che venga superato quando un campo specifico nella risposta in formato JSON corrisponde a un'espressione regolare, utilizza i seguenti valori per l'oggetto ContentMatcher:

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

Per fare in modo che il controllo di uptime non vada a buon fine quando un campo specifico nella risposta in formato JSON corrisponde a un'espressione regolare, utilizza i seguenti valori per l'oggetto 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"
    }
],
...

Per illustrare come funzionano i test di espressione regolare JSONpath, considera i seguenti dati di risposta JSON:

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

La seguente tabella mostra lo stato del controllo di uptime della risposta precedente, ma per percorsi, espressioni regolari e tipi di test diversi:

Stato dei controlli di uptime       
JSONpath Espressione regolare JSONpath corrisponde a regex JSONpath non corrisponde all'espressione regolare
$.type [A-Z]{4}Path superata non superata
$.name Sample non superata superata
$.name .*Sample.* superata non superata
$.content[1].id 2 superata non superata
$.content[1].phone "[12345]{2}" superata non superata
$.content[1].enabled f.* superata non superata

Nella tabella precedente, la colonna JSONpath identifica l'elemento da testare e la colonna Regex elenca l'espressione regolare. Le due colonne successive specificano il tipo di test e il risultato del controllo di uptime.

Passaggi successivi