La convalida della risposta ti consente di verificare che una risorsa monitorata restituisca sia un codice di stato HTTP previsto sia contenuti del payload specifici durante un controllo di uptime.
Per impostazione predefinita, i controlli di uptime HTTP e HTTPS verificano solo che il codice di stato rientri nell'intervallo 2xx e non esaminano il corpo. Puoi personalizzare queste impostazioni per
accettare codici di stato aggiuntivi, ad esempio 3xx, o per verificare se il payload
corrisponde a stringhe, espressioni regolari o percorsi JSON specifici.
Come convalidare i dati delle risposte
Puoi configurare Cloud Monitoring per convalidare i dati di risposta di una risorsa controllata quando crei o modifichi un controllo di uptime.
Console
Per creare un controllo di uptime che convalidi i dati di risposta:
-
Nella console Google Cloud , vai alla pagina
Controlli di uptime:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Nella barra degli strumenti della console Google Cloud , seleziona il tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione.
- Fai clic su Crea controllo di uptime.
- Inserisci un titolo e fai clic su Avanti.
- Inserisci il target e fai clic su Avanti.
Configura la convalida della risposta:
- Per convalidare i dati della risposta, assicurati che sia visualizzato il messaggio Corrispondenza dei contenuti attivata e poi compila 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
2xxcome risposta riuscita.
Fai clic su Avanti e completa la configurazione del controllo di uptime.
REST
Per configurare un controllo di uptime per convalidare i dati di risposta, popola l'array contentMatchers dell'oggetto UptimeCheckConfig.
Gli oggetti ContentMatcher contengono i seguenti campi:
matcher: descrive come viene eseguito il confronto. Per un elenco dei valori, vediContentMatcherOption.Non utilizzare il valore
CONTENT_MATCHER_OPTION_UNSPECIFIED.content: memorizza il valore da cercare nei dati di risposta. Il valore è un valore letterale stringa o un'espressione regolare.jsonPathMatcher: memorizza un oggettoJsonPathMatcherche descrive il percorso JSON da cercare e come eseguire il confronto.Ometti questo campo a meno che il controllo di uptime non convalidi un JSONpath specifico.
Il resto di questo documento descrive come utilizzare le opzioni di corrispondenza dei contenuti.
Opzioni per convalidare i dati delle risposte
Questa sezione descrive le strategie di corrispondenza delle stringhe che puoi utilizzare per convalidare la risposta inviata da una risorsa controllata. Per ogni strategia, specifichi un valore e se la ricerca di questo valore nei dati di risposta comporta l'esito positivo o negativo del controllo dell'uptime.
Potrebbe non essere possibile eseguire la ricerca nell'intera risposta di una risorsa controllata:
- Controlli di uptime HTTP e HTTPS: vengono esaminati i primi 4 MB.
- Controlli di uptime TCP: viene eseguita la ricerca nei primi 1 MB.
Cerca una sottostringa letterale
Console
Per configurare il controllo di uptime in modo che venga superato quando i dati di risposta contengono una sottostringa letterale, utilizza le seguenti impostazioni:
- Seleziona Contiene nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci la sottostringa letterale nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
Per configurare il controllo di uptime in modo che non riesca quando i dati di risposta contengono una sottostringa letterale, utilizza le seguenti impostazioni:
- Seleziona Non contiene nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci la sottostringa letterale nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
REST
Per configurare il controllo di uptime in modo che venga superato quando i dati di risposta contengono una sottostringa letterale, utilizza i seguenti valori:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "CONTAINS_STRING"
}
],
...
Per configurare il controllo di uptime in modo che non riesca quando i dati di risposta contengono una sottostringa letterale, utilizza i seguenti valori:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "NOT_CONTAINS_STRING"
}
],
...
La tabella seguente mostra lo stato del controllo dell'uptime per diversi dati di risposta, stringhe di test e tipi di test:
| Stato del controllo di uptime | |||
|---|---|---|---|
| Dati della risposta | 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 di 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.
Eseguire ricerche utilizzando un'espressione regolare
Console
Per configurare il controllo di uptime in modo che venga superato quando i dati di risposta corrispondono a un'espressione regolare, utilizza le seguenti impostazioni:
- Seleziona Corrisponde alle espressioni regolari nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci un'espressione regolare nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
Per configurare il controllo di uptime in modo che non riesca quando i dati di risposta corrispondono a un'espressione regolare, utilizza le seguenti impostazioni:
- Seleziona Non corrisponde all'espressione regolare nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci un'espressione regolare nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
REST
Per configurare il controllo di uptime in modo che venga superato quando i dati di risposta corrispondono a un'espressione regolare, utilizza i seguenti valori:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "MATCHES_REGEX"
}
],
...
Per configurare il controllo di uptime in modo che non riesca quando i dati di risposta corrispondono a un'espressione regolare, utilizza i seguenti valori:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "NOT_MATCHES_REGEX"
}
],
...
La seguente tabella mostra lo stato del controllo dell'uptime per diversi dati di risposta, espressioni regolari e tipi di test:
| Stato del controllo di uptime | |||
|---|---|---|---|
| Dati della risposta | Regex | Corrisponde a espressione regolare | Non corrisponde all'espressione regolare |
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 di 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 con un'espressione regolare:
- Confrontare JSONpath con un numero o un valore letterale stringa
- Confrontare JSONPath con un'espressione regolare
Quando specifichi un JSONpath, devi specificare l'oggetto radice con $. e
poi seguire con un identificatore di campo specifico. Quando la risposta JSON
contiene un array di elementi, utilizza le parentesi quadre, [], per identificare l'elemento
specifico dell'array da corrispondere. Gli esempi seguenti illustrano la sintassi del percorso:
$.typecorrisponde al campotypedi un oggetto principale.$.[0].address.citycorrisponde al campocitynell'oggettoaddressmemorizzato nel primo elemento dell'array della risposta JSON.$.content[0].phonecorrisponde al campophonedel primo elemento dell'array del campocontent. Il campocontentè un elemento secondario dell'oggetto radice.
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 dell'intero percorso del campo geo nel primo elemento dell'array,
imposta JSONpath su $.[0].address.geo e inserisci il valore completo
nel campo dei contenuti:
{
"lat": "-37.3159",
"lng": "81.1496"
}
Se ti interessa sperimentare queste opzioni, trova un sito web pubblico che restituisca una risposta JSON.
Confrontare JSONpath con un numero o una stringa letterale
Console
Per configurare il controllo di uptime in modo che venga superato quando un JSONpath specifico nei dati di risposta corrisponde a un valore letterale stringa, utilizza le seguenti impostazioni:
- Seleziona Corrispondenze su JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci il percorso nel campo JSONPath.
- Inserisci il numero o la stringa letterale nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
Per configurare il controllo di uptime in modo che non riesca quando un JSONpath specifico nei dati di risposta corrisponde a un valore letterale stringa, utilizza le seguenti impostazioni:
- Seleziona Non corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci il percorso nel campo JSONPath.
- Inserisci il numero o la stringa letterale nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
REST
Per configurare il controllo dell'uptime in modo che venga superato quando un campo specifico nella risposta in formato JSON corrisponde a un numero o a una stringa letterale, 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 configurare il controllo dell'uptime in modo che non riesca 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 il funzionamento dei 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 tabella seguente mostra lo stato del controllo dell'uptime per la risposta precedente, ma per percorsi, valori di test e tipi di test diversi:
| Stato del controllo di uptime | |||
|---|---|---|---|
| JSONpath | Valore test | Corrispondenze JSONPath | JSONPath non corrisponde |
$. |
"JSONpath" |
superata | non superata |
$. |
"Sample" |
non superata | superata |
$. |
"Sample Uptime Check" |
superata | non superata |
$. |
1 |
superata | non superata |
$. |
"Exact" |
superata | non superata |
$. |
true |
superata | non superata |
Nella tabella precedente, la colonna JSONpath identifica l'elemento da testare e la colonna Valore di test elenca il valore. Le due colonne successive specificano il tipo di test e il risultato del controllo di uptime.
Confrontare JSONPath con un'espressione regolare
Le corrispondenze delle espressioni regolari supportano la corrispondenza di una stringa, un numero, un valore booleano e valori JSON null.
Console
Per configurare il controllo di uptime in modo che venga superato quando un JSONpath specifico nei dati di risposta corrisponde a un'espressione regolare, utilizza le seguenti impostazioni:
- Seleziona Corrispondenze su JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci il percorso nel campo JSONPath.
- Inserisci l'espressione regolare nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
Per configurare il controllo di uptime in modo che non riesca quando un JSONpath specifico nei dati di risposta corrisponde a un'espressione regolare, utilizza le seguenti impostazioni:
- Seleziona Non corrisponde a JSONPath nel menu Tipo di corrispondenza dei contenuti della risposta.
- Inserisci il percorso nel campo JSONPath.
- Inserisci l'espressione regolare nel campo Contenuto della risposta.
- Per verificare la configurazione, fai clic su Test.
REST
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 configurare il controllo dell'uptime in modo che non riesca 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 il funzionamento dei test delle espressioni regolari 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 tabella seguente mostra lo stato del controllo dell'uptime per la risposta precedente, ma per percorsi, espressioni regolari e tipi di test diversi:
| Stato del controllo di uptime | |||
|---|---|---|---|
| JSONpath | Regex | JSONPath corrisponde a espressione regolare | JSONPath non corrisponde all'espressione regolare |
$. |
[A-Z]{4}Path |
superata | non superata |
$. |
Sample |
non superata | superata |
$. |
. |
superata | non superata |
$. |
2 |
superata | non superata |
$. |
"[12345]{2}" |
superata | non superata |
$. |
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
- Crea un controllo di uptime
- Gestire i controlli di uptime
- Crea policy di avviso per i controlli di uptime