Com a validação de resposta, é possível verificar se um recurso monitorado retorna um código de status HTTP esperado e um conteúdo de payload específico durante uma verificação de tempo de atividade.
Por padrão, as verificações de tempo de atividade HTTP e HTTPS só verificam se o código de status está no intervalo 2xx e não inspecionam o corpo. É possível personalizar essas configurações para aceitar outros códigos de status, como 3xx, ou para verificar se a carga útil corresponde a strings, expressões regulares ou caminhos JSON específicos.
Como validar os dados de resposta
É possível configurar o Cloud Monitoring para validar os dados de resposta de um recurso verificado ao criar ou editar uma verificação de tempo de atividade.
Console
Para criar uma verificação de tempo de atividade que valide os dados de resposta, faça o seguinte:
-
No console Google Cloud , acesse a página
Verificações de tempo de atividade:
Acesse Verificações de tempo de atividade
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do console Google Cloud , selecione seu projeto Google Cloud . Para configurações do App Hub, selecione o projeto host ou de gerenciamento do App Hub.
- Clique em Criar verificação de tempo de atividade.
- Insira um Título e clique em Próxima.
- Insira a meta e clique em Próxima.
Configure a Validação de resposta:
- Para validar os dados de resposta, verifique se a opção A correspondência de conteúdo está ativada aparece e preencha os campos relacionados à validação de resposta. Para mais informações sobre essas opções, consulte a próxima seção deste documento.
- Para as verificações de tempo de atividade HTTP, configure os códigos de resposta aceitáveis.
Por padrão, as verificações de tempo de atividade HTTP marcam qualquer resposta
2xxcomo bem-sucedida.
Clique em Próxima e conclua a configuração da verificação de tempo de atividade.
REST
Para configurar uma verificação de tempo de atividade que valide os dados de resposta, preencha a matriz contentMatchers do objeto UptimeCheckConfig.
Os objetos ContentMatcher contêm os seguintes campos:
matcher: descreve como a comparação é feita. Para uma lista de valores, consulteContentMatcherOption.Não use o valor
CONTENT_MATCHER_OPTION_UNSPECIFIED.content: armazena o valor a ser pesquisado nos dados da resposta. O valor é um literal de string ou uma expressão regular.jsonPathMatcher: armazena um objetoJsonPathMatcherque descreve qual JSONpath pesquisar e como realizar a comparação.Omita esse campo, a menos que a verificação de tempo de atividade esteja validando um JSONpath específico.
O restante deste documento descreve como usar as opções de correspondência de conteúdo.
Opções para validar os dados de resposta
Esta seção descreve as estratégias de correspondência de strings que você pode usar para validar a resposta enviada por um recurso verificado. Para cada estratégia, especifique um valor e se encontrar esse valor nos dados de resposta resulta na aprovação ou falha da verificação de tempo de atividade.
A resposta completa de um recurso verificado pode não ser pesquisada:
- Verificações de tempo de atividade HTTP e HTTPS: os primeiros 4 MB são pesquisados.
- Verificações de tempo de atividade do TCP: os primeiros 1 MB são pesquisados.
Pesquisar uma substring literal
Console
Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta contiverem uma substring literal, use as seguintes configurações:
- Selecione Contém no menu Tipo de correspondência de conteúdo da resposta.
- Insira a subcadeia de caracteres literal no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
Para configurar a verificação de tempo de atividade para falhar quando os dados de resposta contiverem uma subcadeia de caracteres literal, use as seguintes configurações:
- Selecione Não contém no menu Tipo de correspondência do conteúdo da resposta.
- Insira a subcadeia de caracteres literal no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
REST
Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta contiverem uma subcadeia de caracteres literal, use os seguintes valores:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "CONTAINS_STRING"
}
],
...
Para configurar a verificação de tempo de atividade para falhar quando os dados de resposta contiverem uma substring literal, use os seguintes valores:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "NOT_CONTAINS_STRING"
}
],
...
A tabela a seguir mostra o status da verificação de tempo de atividade para diferentes dados de resposta, strings de teste e tipos de teste:
| Status da verificação de tempo de atividade | |||
|---|---|---|---|
| Dados de resposta | String de teste | Contém | Não contém |
abcd |
abcd |
pass | errada |
abc |
abcd |
errada | pass |
abc |
a |
pass | errada |
Uptime Checks |
Uptime |
pass | errada |
Uptime Checks |
uptime |
errada | pass |
Na tabela anterior, a coluna Dados de resposta descreve os dados retornados pelo recurso marcado, enquanto a coluna String de teste lista o literal de string. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação de tempo de atividade.
Pesquisar usando uma expressão regular
Console
Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta corresponderem a uma expressão regular, use as seguintes configurações:
- Selecione Corresponde ao regex no menu Tipo de correspondência de conteúdo da resposta.
- Insira uma expressão regular no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
Para configurar a falha da verificação de tempo de atividade quando os dados de resposta corresponderem a uma expressão regular, use as seguintes configurações:
- Selecione Não corresponde ao regex no menu Tipo de correspondência de conteúdo da resposta.
- Insira uma expressão regular no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
REST
Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta corresponderem a uma expressão regular, use os seguintes valores:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "MATCHES_REGEX"
}
],
...
Para configurar a verificação de tempo de atividade para falhar quando os dados de resposta corresponderem a uma expressão regular, use os seguintes valores:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "NOT_MATCHES_REGEX"
}
],
...
A tabela a seguir mostra o status da verificação de tempo de atividade para diferentes dados de resposta, expressões regulares e tipos de teste:
| Status da verificação de tempo de atividade | |||
|---|---|---|---|
| Dados de resposta | Regex | Corresponde ao regex | Não corresponde à regex |
abcd |
abcd |
pass | errada |
Uptime Checks |
[uU]ptime |
pass | errada |
Uptime Checks |
[a-z]{6} |
errada | pass |
Uptime Checks |
[a-zA-Z]{6} |
pass | errada |
Na tabela anterior, a coluna Dados de resposta descreve os dados retornados pelo recurso verificado, enquanto a coluna Regex lista a expressão regular. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação de tempo de atividade.
Pesquisar um campo específico em uma resposta JSON
É possível configurar uma verificação de tempo de atividade para validar um JSONpath. Quando você seleciona um teste JSONPath, ele compara um valor de caminho a um número, um literal de string ou uma expressão regular:
Ao especificar um JSONpath, você precisa especificar o objeto raiz com $. e
seguir com um identificador de campo específico. Quando a resposta JSON
contém uma matriz de elementos, use colchetes, [], para identificar o
elemento específico da matriz a ser correspondido. Os exemplos a seguir ilustram a sintaxe do caminho:
$.typecorresponde ao campotypede um objeto raiz.$.[0].address.citycorresponde ao campocityno objetoaddressarmazenado no primeiro elemento da matriz da resposta JSON.$.content[0].phonecorresponde ao campophonedo primeiro elemento da matriz do campocontent. O campocontenté um filho do objeto raiz.
É possível configurar um teste de tempo de atividade para corresponder a vários campos. Considere o seguinte JSON:
[
{
...
"address": {
...
"city": "Gwenborough",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
},
...
]
Para corresponder ao caminho inteiro do campo geo no primeiro elemento da matriz,
defina o JSONpath como $.[0].address.geo e insira o valor completo
no campo de conteúdo:
{
"lat": "-37.3159",
"lng": "81.1496"
}
Se você quiser testar essas opções, encontre um site público que retorne uma resposta JSON.
Comparar JSONpath a um número ou literal de string
Console
Para configurar a verificação de tempo de atividade para ser aprovada quando um JSONpath específico nos dados de resposta corresponder a um literal de string, use as seguintes configurações:
- Selecione Corresponde em JSONPath no menu Tipo de correspondência de conteúdo da resposta.
- Insira o caminho no campo JSONPath.
- Insira o número ou o literal de string no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
Para configurar a verificação de tempo de atividade para falhar quando um JSONpath específico nos dados de resposta corresponder a um literal de string, use as seguintes configurações:
- Selecione Não corresponde em JSONPath no menu Tipo de correspondência de conteúdo da resposta.
- Insira o caminho no campo JSONPath.
- Insira o número ou o literal de string no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
REST
Para configurar a verificação de tempo de atividade para ser aprovada quando um campo específico na
resposta formatada em JSON corresponder a um número ou um literal de string,
use os seguintes valores para o objeto 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"
}
}
],
...
Para configurar a verificação de tempo de atividade para falhar quando um campo específico na
resposta formatada em JSON corresponder a um número ou um literal de string,
use os seguintes valores para o objeto 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"
}
}
],
...
Para ilustrar como os testes de correspondência de strings JSONpath funcionam, considere os seguintes dados de resposta JSON:
{
"name": "Sample Uptime Check",
"type": "JSONpath",
"content": [
{
"id": 1,
"phone": "1234567890",
"alias": "Exact",
"enabled": true,
},
{
"id": 2,
"phone": "1234512345",
"alias": "Regex",
"enabled": false,
}
]
}
A tabela a seguir mostra o status da verificação de tempo de atividade para a resposta anterior, mas com caminhos, valores e tipos de teste diferentes:
| Status da verificação de tempo de atividade | |||
|---|---|---|---|
| JSONpath | Valor de teste | Correspondências de JSONPath | O JSONPath não corresponde |
$. |
"JSONpath" |
pass | errada |
$. |
"Sample" |
errada | pass |
$. |
"Sample Uptime Check" |
pass | errada |
$. |
1 |
pass | errada |
$. |
"Exact" |
pass | errada |
$. |
true |
pass | errada |
Na tabela anterior, a coluna JSONpath identifica qual elemento testar, e a coluna Valor de teste lista o valor. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação de tempo de atividade.
Comparar JSONPath a uma expressão regular
As correspondências de expressões regulares são compatíveis com strings, números, booleanos e valores JSON nulos.
Console
Para configurar a verificação de tempo de atividade para ser aprovada quando um JSONpath específico nos dados de resposta corresponder a uma expressão regular, use as seguintes configurações:
- Selecione Corresponde em JSONPath no menu Tipo de correspondência de conteúdo da resposta.
- Insira o caminho no campo JSONPath.
- Insira a expressão regular no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
Para configurar a verificação de tempo de atividade de modo que ela falhe quando um JSONpath específico nos dados de resposta corresponder a uma expressão regular, use as seguintes configurações:
- Selecione Não corresponde em JSONPath no menu Tipo de correspondência de conteúdo da resposta.
- Insira o caminho no campo JSONPath.
- Insira a expressão regular no campo Conteúdo da resposta.
- Para verificar a configuração, clique em Testar.
REST
Para configurar a verificação de tempo de atividade para ser aprovada quando um campo específico na
resposta formatada em JSON corresponder a uma expressão regular, use os seguintes
valores para o objeto ContentMatcher:
...
"contentMatchers": [
{
"content" : "Set to the regular expression to be matched.",
"matcher" : "MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "REGEX_MATCH"
}
}
],
...
Para configurar a verificação de tempo de atividade para falhar quando um campo específico na
resposta formatada em JSON corresponder a uma expressão regular, use os seguintes
valores para o objeto 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"
}
}
],
...
Para ilustrar como os testes de expressão regular JSONpath funcionam, considere os seguintes dados de resposta JSON:
{
"name": "Sample Uptime Check",
"type": "JSONpath",
"content": [
{
"id": 1,
"phone": "1234567890",
"alias": "Exact",
"enabled": true,
},
{
"id": 2,
"phone": "1234512345",
"alias": "Regex",
"enabled": false,
}
]
}
A tabela a seguir mostra o status da verificação de tempo de atividade da resposta anterior, mas para diferentes caminhos, expressões regulares e tipos de teste:
| Status da verificação de tempo de atividade | |||
|---|---|---|---|
| JSONpath | Regex | JSONPath corresponde à ReGex | JSONpath não corresponde à regex |
$. |
[A-Z]{4}Path |
pass | errada |
$. |
Sample |
errada | pass |
$. |
. |
pass | errada |
$. |
2 |
pass | errada |
$. |
"[12345]{2}" |
pass | errada |
$. |
f. |
pass | errada |
Na tabela anterior, a coluna JSONpath identifica qual elemento testar, e a coluna Regex lista a expressão regular. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação de tempo de atividade.
A seguir
- Criar uma verificação de tempo de atividade
- Gerenciar verificações de tempo de atividade
- Criar políticas de alertas para verificações de tempo de atividade