Validar datos de respuesta

En este documento se describe cómo configurar una comprobación de tiempo de actividad para validar el código de respuesta HTTP y los datos de respuesta enviados por un recurso comprobado. De forma predeterminada, las comprobaciones de tiempo de actividad HTTP verifican que el código de respuesta sea 2xx. Además, de forma predeterminada, los datos de respuesta no se validan. Sin embargo, puedes modificar estos ajustes. Por ejemplo, puedes configurar una comprobación de disponibilidad HTTP para que acepte los códigos de respuesta 2xx y 3xx. En todas las comprobaciones de disponibilidad, puede especificar un valor que los datos de respuesta deben o no deben contener para que la comprobación de disponibilidad se realice correctamente.

Esta función solo se admite en proyectos de Google Cloud . En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.

Cómo validar los datos de respuesta

Puede configurar Cloud Monitoring para que valide los datos de respuesta de un recurso seleccionado al crear o editar una comprobación de tiempo de actividad.

Google Cloud consola

Para crear una comprobación de disponibilidad que valide los datos de respuesta, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página  Comprobaciones de tiempo de actividad:

    Ve a Comprobaciones de disponibilidad del servicio.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
  3. Haz clic en Crear comprobación de disponibilidad.
  4. Introduce un título y haz clic en Siguiente.
  5. Introduce el Objetivo y haz clic en Siguiente.
  6. Configura la validación de respuestas:

    • Para validar los datos de respuesta, comprueba que se muestra el mensaje La coincidencia de contenido está habilitada y, a continuación, rellena los campos relacionados con la validación de la respuesta. Para obtener información sobre estas opciones, consulta la siguiente sección de este documento.
    • En el caso de las comprobaciones de disponibilidad HTTP, configura los códigos de respuesta aceptables. De forma predeterminada, las comprobaciones de tiempo de actividad HTTP marcan cualquier respuesta 2xx como correcta.
  7. Haz clic en Siguiente y completa la configuración de la comprobación del tiempo de actividad.

API de Cloud Monitoring

Para configurar una comprobación de tiempo de actividad que valide los datos de respuesta, rellena la matriz contentMatchers del objeto UptimeCheckConfig.

Los objetos ContentMatcher contienen los siguientes campos:

  • matcher: describe cómo se realiza la comparación. Para ver una lista de valores, consulta ContentMatcherOption.

    No uses el valor CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: almacena el valor que se va a buscar en los datos de respuesta. El valor es un literal de cadena o una expresión regular.

  • jsonPathMatcher: almacena un objeto JsonPathMatcher que describe qué JSONPath se debe buscar y cómo se debe realizar la comparación.

    Omite este campo a menos que la comprobación de disponibilidad valide un JSONPath específico.

En el resto de este documento se describe cómo usar las opciones de coincidencia de contenido.

Opciones para validar los datos de respuesta

En esta sección se describen las estrategias de coincidencia de cadenas que puedes usar para validar la respuesta enviada por un recurso comprobado. En cada estrategia, especifica un valor y si encontrar ese valor en los datos de respuesta provoca que la comprobación del tiempo de actividad se supere o no.

Es posible que no se busque en toda la respuesta de un recurso verificado:

  • Comprobaciones del tiempo de actividad de HTTP y HTTPS: se buscan los primeros 4 MB.
  • Comprobaciones de disponibilidad de TCP: se busca en el primer MB.

Buscar una subcadena literal

Google Cloud consola

Para configurar la comprobación de tiempo de actividad de forma que se complete correctamente cuando los datos de respuesta contengan una subcadena literal, utilice los siguientes ajustes:

  1. Seleccione Contiene en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la subcadena literal en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

Para configurar la comprobación de tiempo de actividad de forma que falle cuando los datos de respuesta contengan una subcadena literal, utilice los siguientes ajustes:

  1. Selecciona No contiene en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la subcadena literal en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

API de Cloud Monitoring

Para configurar la comprobación de tiempo de actividad de forma que se supere cuando los datos de respuesta contengan una subcadena literal, utilice los siguientes valores:

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

Para configurar la comprobación de tiempo de actividad de forma que falle cuando los datos de respuesta contengan una subcadena literal, utilice los siguientes valores:

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

En la siguiente tabla se muestra el estado de la comprobación de disponibilidad del servicio para diferentes datos de respuesta, cadenas de prueba y tipos de prueba:

Estado de la comprobación de disponibilidad del servicio       
Datos de respuesta Cadena de prueba Contiene No contiene
abcd abcd aprobar fail
abc abcd fail aprobar
abc a aprobar fail
Uptime Checks Uptime aprobar fail
Uptime Checks uptime fail aprobar

En la tabla anterior, la columna Datos de respuesta describe los datos devueltos por el recurso seleccionado, mientras que la columna Cadena de prueba muestra el literal de cadena. En las dos columnas siguientes se especifica el tipo de prueba y el resultado de la comprobación del tiempo de actividad.

Buscar con una expresión regular

Google Cloud consola

Para configurar la comprobación de tiempo de actividad de forma que se complete correctamente cuando los datos de respuesta coincidan con una expresión regular, utilice los siguientes ajustes:

  1. En el menú Tipo de coincidencia de contenido de la respuesta, selecciona Coincide con la expresión regular.
  2. Introduzca una expresión regular en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

Para configurar la comprobación de tiempo de actividad de forma que falle cuando los datos de respuesta coincidan con una expresión regular, utilice los siguientes ajustes:

  1. Seleccione No coincide con la expresión regular en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduzca una expresión regular en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

API de Cloud Monitoring

Para configurar la comprobación del tiempo de actividad de forma que se complete correctamente cuando los datos de respuesta coincidan con una expresión regular, utilice los siguientes valores:

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

Para configurar la comprobación del tiempo de actividad de forma que falle cuando los datos de respuesta coincidan con una expresión regular, utilice los siguientes valores:

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

En la siguiente tabla se muestra el estado de la comprobación del tiempo de actividad de diferentes datos de respuesta, expresiones regulares y tipos de prueba:

Estado de la comprobación de disponibilidad del servicio       
Datos de respuesta Regex Coincide con la expresión regular No coincide con la regex
abcd abcd aprobar fail
Uptime Checks [uU]ptime aprobar fail
Uptime Checks [a-z]{6} fail aprobar
Uptime Checks [a-zA-Z]{6} aprobar fail

En la tabla anterior, la columna Datos de respuesta describe los datos devueltos por el recurso comprobado, mientras que la columna Expresión regular muestra la expresión regular. En las dos columnas siguientes se especifica el tipo de prueba y el resultado de la comprobación del tiempo de actividad.

Buscar un campo específico en una respuesta JSON

Puedes configurar una comprobación de disponibilidad para validar un JSONPath. Cuando seleccionas una prueba de JSONPath, la prueba compara un valor de ruta con un número, un literal de cadena o una expresión regular:

Cuando especifiques una ruta JSON, debes especificar el objeto raíz con $. y, a continuación, el identificador de un campo específico. Cuando la respuesta JSON contiene una matriz de elementos, usa corchetes, [], para identificar el elemento de matriz específico que quieres que coincida. En los siguientes ejemplos se muestra la sintaxis de la ruta:

  • $.type coincide con el campo type de un objeto raíz.
  • $.[0].address.city coincide con el campo city del objeto address almacenado en el primer elemento del array de la respuesta JSON.
  • $.content[0].phone coincide con el campo phone del primer elemento de la matriz del campo content. El campo content es un elemento secundario del objeto raíz.

Puede configurar una prueba de tiempo de actividad para que coincida con varios campos. Considera el siguiente JSON:

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

Para que coincida con toda la ruta del campo geo del primer elemento de la matriz, defina la ruta JSON como $.[0].address.geo e introduzca el valor completo en el campo de contenido:

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

Si te interesa probar estas opciones, busca un sitio web público que devuelva una respuesta JSON.

Comparar JSONPath con un literal numérico o de cadena

Google Cloud consola

Para configurar la comprobación de disponibilidad de forma que se complete cuando un JSONPath específico de los datos de respuesta coincida con un literal de cadena, utiliza los siguientes ajustes:

  1. Selecciona Coincidencias en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la ruta en el campo JSONPath.
  3. Introduce el número o el literal de cadena en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

Para configurar la comprobación de tiempo de actividad de forma que falle cuando un JSONPath específico de los datos de respuesta coincida con un literal de cadena, utilice los siguientes ajustes:

  1. Selecciona No coincide con JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la ruta en el campo JSONPath.
  3. Introduce el número o el literal de cadena en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

API de Cloud Monitoring

Para configurar la comprobación de tiempo de actividad de forma que se complete correctamente cuando un campo específico de la respuesta en formato JSON coincida con un número o un literal de cadena, usa los siguientes valores para el 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 la comprobación de tiempo de actividad de forma que falle cuando un campo específico de la respuesta con formato JSON coincida con un número o un literal de cadena, usa los siguientes valores para el 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 cómo funcionan las pruebas de coincidencia de cadenas de JSONPath, considera los siguientes datos de respuesta JSON:

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

En la siguiente tabla se muestra el estado de la comprobación del tiempo de actividad de la respuesta anterior, pero con diferentes rutas, valores de prueba y tipos de prueba:

Estado de la comprobación de disponibilidad del servicio       
JSONpath Valor de prueba Coincidencias de JSONPath JSONpath no coincide
$.type "JSONpath" aprobar fail
$.name "Sample" fail aprobar
$.name "Sample Uptime Check" aprobar fail
$.content[0].id 1 aprobar fail
$.content[0].alias "Exact" aprobar fail
$.content[0].enabled true aprobar fail

En la tabla anterior, la columna JSONpath identifica el elemento que se va a probar y la columna Valor de prueba muestra el valor. En las dos columnas siguientes se especifica el tipo de prueba y el resultado de la comprobación del tiempo de actividad.

Comparar JSONPath con una expresión regular

Las coincidencias de expresiones regulares admiten cadenas, números, valores booleanos y valores JSON nulos.

Google Cloud consola

Para configurar la comprobación de disponibilidad de forma que se complete correctamente cuando un JSONPath específico de los datos de respuesta coincida con una expresión regular, utiliza los siguientes ajustes:

  1. Selecciona Coincidencias en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la ruta en el campo JSONPath.
  3. Introduzca la expresión regular en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

Para configurar la comprobación de tiempo de actividad de forma que falle cuando un JSONPath específico de los datos de respuesta coincida con una expresión regular, utiliza los siguientes ajustes:

  1. Selecciona No coincide con JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Introduce la ruta en el campo JSONPath.
  3. Introduzca la expresión regular en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

API de Cloud Monitoring

Para configurar la comprobación del tiempo de actividad de forma que se supere cuando un campo específico de la respuesta con formato JSON coincida con una expresión regular, utiliza los siguientes valores para el 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 la comprobación del tiempo de actividad de forma que falle cuando un campo específico de la respuesta con formato JSON coincida con una expresión regular, utiliza los siguientes valores para el 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 cómo funcionan las pruebas de expresiones regulares de JSONPath, considera los siguientes datos de respuesta JSON:

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

En la siguiente tabla se muestra el estado de la comprobación de tiempo de actividad de la respuesta anterior, pero para diferentes rutas, expresiones regulares y tipos de prueba:

Estado de la comprobación de disponibilidad del servicio       
JSONpath Regex JSONPath coincide con la regex JSONPath no coincide con la regex
$.type [A-Z]{4}Path aprobar fail
$.name Sample fail aprobar
$.name .*Sample.* aprobar fail
$.content[1].id 2 aprobar fail
$.content[1].phone "[12345]{2}" aprobar fail
$.content[1].enabled f.* aprobar fail

En la tabla anterior, la columna JSONpath identifica el elemento que se va a probar y la columna Regex muestra la expresión regular. En las dos columnas siguientes se especifica el tipo de prueba y el resultado de la comprobación del tiempo de actividad.

Siguientes pasos