Valider les données de réponse

Ce document explique comment configurer un test de disponibilité pour valider le code de réponse HTTP et les données de réponse envoyées par une ressource vérifiée. Par par défaut, les tests de disponibilité HTTP vérifient que le code de réponse est 2xx. Par ailleurs, par défaut, les données de réponse ne sont pas validées. Toutefois, vous pouvez modifier ces paramètres. Par exemple, vous pouvez configurer un test de disponibilité HTTP pour accepter Codes de réponse 2xx et 3xx. Pour tous les tests de disponibilité, vous pouvez spécifier une valeur que les données de réponse doivent ou ne doivent pas contenir pour que le test de disponibilité aboutisse.

Comment valider les données de réponse

Vous pouvez configurer Cloud Monitoring pour valider les données de réponse une ressource testée lorsque vous créez ou modifiez un test de disponibilité.

console Google Cloud

Pour créer un test de disponibilité qui valide les données de réponse, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page  Tests de disponibilité:

    Accéder à la page Tests de disponibilité

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Cliquez sur Create uptime check (Créer un test de disponibilité).
  3. Saisissez un titre, puis cliquez sur Suivant.
  4. Saisissez la cible, puis cliquez sur Suivant.
  5. Configurez la validation de réponse:

    • Pour valider les données de réponse, assurez-vous que l'option La correspondance de contenu est activée s'affiche, puis remplissez les champs liés à la validation de la réponse. Pour en savoir plus sur ces options, consultez la section suivante document.
    • Pour les tests de disponibilité HTTP, configurez les codes de réponse acceptables. Par défaut, les tests de disponibilité HTTP marquent toute réponse 2xx comme une réponse réussie.
  6. Cliquez sur Suivant et terminez la configuration de la vérification de l'état de fonctionnement.

API Cloud Monitoring

Pour configurer un test de disponibilité afin de valider les données de réponse, remplissez le tableau contentMatchers du objet UptimeCheckConfig.

Les objets ContentMatcher contiennent les champs suivants :

  • matcher: décrit comment la comparaison est effectuée. Pour obtenir la liste des valeurs, consultez ContentMatcherOption

    N'utilisez pas la valeur CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: stocke la valeur à rechercher dans les données de réponse. La valeur est un littéral de chaîne ou une expression régulière.

  • jsonPathMatcher : stocke un objet JsonPathMatcher qui décrit le chemin JSON à rechercher et la manière d'effectuer la comparaison.

    Omettez ce champ, sauf si le test de disponibilité valide JSONpath spécifique.

Le reste de ce document explique comment utiliser la fonction de correspondance de contenu options.

Options de validation des données de réponse

Cette section décrit les stratégies de mise en correspondance de chaînes que vous pouvez utiliser pour valider la réponse envoyée par une ressource validée. Pour chaque stratégie, vous spécifiez une valeur et indiquez si la recherche de cette valeur dans les données de réponse entraîne la réussite ou l'échec du test de disponibilité.

Il est possible que la réponse complète d'une ressource vérifiée ne fasse pas l'objet d'une recherche:

  • Tests de disponibilité HTTP et HTTPS : les quatre premiers Mo sont recherchés.
  • Tests de disponibilité TCP: la recherche porte sur le premier Mo.

Rechercher une sous-chaîne littérale

console Google Cloud

Pour configurer le test de disponibilité de sorte qu'il réussisse lorsque les données de réponse contiennent une sous-chaîne littérale, utilisez les paramètres suivants :

  1. Sélectionnez Contient dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez la sous-chaîne littérale dans le champ Contenu de la réponse.
  3. Pour vérifier la configuration, cliquez sur Test (Tester).

Pour configurer le test de disponibilité de sorte qu'il échoue lorsque les données de réponse contiennent une sous-chaîne littérale, utilisez les paramètres suivants :

  1. Sélectionnez Ne contient pas dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez la sous-chaîne littérale dans le champ Contenu de la réponse.
  3. Pour vérifier la configuration, cliquez sur Test (Tester).

API Cloud Monitoring

Pour configurer le test de disponibilité afin qu'il soit réussi lorsque les données de réponse contiennent un une sous-chaîne littérale, utilisez les valeurs suivantes:

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

Pour configurer la vérification de l'état de fonctionnement de sorte qu'elle échoue lorsque les données de réponse contiennent une sous-chaîne littérale, utilisez les valeurs suivantes :

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

Le tableau suivant indique l'état de la vérification de la disponibilité pour différentes données de réponse, chaînes de test et types de test :

État du test de disponibilité       
Données de réponse Chaîne de test Contient Ne contient pas
abcd abcd réussite échec
abc abcd échec réussite
abc a réussite échec
Uptime Checks Uptime réussite échec
Uptime Checks uptime échec réussite

Dans le tableau précédent, la colonne Données de réponse décrit les données renvoyées par la ressource vérifiée, tandis que la colonne Chaîne de test indique littéral de chaîne. Les deux colonnes suivantes indiquent le type de test et le résultat du test de disponibilité.

Effectuer une recherche à l'aide d'une expression régulière

console Google Cloud

À configurer le test de disponibilité afin qu'il soit réussi lorsque les données de réponse correspondent une expression régulière, utilisez les paramètres suivants:

  1. Sélectionnez Correspond à l'expression régulière dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez une expression régulière dans le champ Contenu de la réponse.
  3. Pour vérifier la configuration, cliquez sur Tester.

Pour configurer le test de disponibilité de sorte qu'il échoue lorsque les données de réponse correspondent à une expression régulière, utilisez les paramètres suivants :

  1. Sélectionnez Ne correspond pas à l'expression régulière dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez une expression régulière dans le champ Contenu de la réponse.
  3. Pour vérifier la configuration, cliquez sur Test (Tester).

API Cloud Monitoring

À configurer le test de disponibilité afin qu'il soit réussi lorsque les données de réponse correspondent une expression régulière, utilisez les valeurs suivantes:

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

À configurer le test de disponibilité pour qu'il échoue en cas de correspondance des données de réponse une expression régulière, utilisez les valeurs suivantes:

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

Le tableau suivant affiche l'état du test de disponibilité pour différentes données de réponse, expressions régulières et types de test:

État du test de disponibilité       
Données de réponse Regex Correspond à l'expression régulière Ne correspond pas à l'expression régulière
abcd abcd réussite échec
Uptime Checks [uU]ptime réussite échec
Uptime Checks [a-z]{6} échec réussite
Uptime Checks [a-zA-Z]{6} réussite échec

Dans le tableau précédent, la colonne Données de réponse décrit les données renvoyées par la ressource vérifiée, tandis que la colonne Regex indique une expression régulière. Les deux colonnes suivantes indiquent le type de test et le résultat du test de disponibilité.

Rechercher un champ spécifique dans une réponse JSON

Vous pouvez configurer un test de disponibilité pour valider un JSONPath. Lorsque vous sélectionnez un test JSONPath, il compare une valeur de chemin à un nombre, une chaîne littérale ou une expression régulière :

Lorsque vous spécifiez un JSONPath, vous devez spécifier l'objet racine avec $., puis le suivre d'un identifiant de champ spécifique. Lorsque la réponse JSON contient un tableau d'éléments, utilisez des crochets, [], pour identifier l'élément de tableau spécifique à faire correspondre. Les exemples suivants illustrent Syntaxe du chemin d'accès:

  • $.type correspond au champ type d'un objet racine.
  • $.[0].address.city correspond au champ city de l'objet address stocké dans le premier élément de tableau de la réponse JSON.
  • $.content[0].phone correspond au champ phone du premier élément du tableau du champ content. Le champ content est un enfant de l'objet racine.

Vous pouvez configurer un test de disponibilité pour qu'il corresponde à plusieurs champs. Tenez compte des JSON suivant:

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

Pour faire correspondre l'intégralité du chemin d'accès du champ geo dans le premier élément du tableau, définissez JSONPath sur $.[0].address.geo et saisissez la valeur complète dans le champ de contenu :

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

Si vous souhaitez tester ces options, recherchez un qui renvoie une réponse JSON. Par exemple, consultez Test JSON.

Comparer JSONpath à un nombre ou un littéral de chaîne

console Google Cloud

Pour configurer le test de disponibilité de sorte qu'il réussisse lorsqu'un chemin JSON spécifique dans les données de réponse correspond à une chaîne littérale, utilisez les paramètres suivants :

  1. Sélectionnez Correspondances sur JSONPath dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez le chemin d'accès dans le champ JSONPath.
  3. Saisissez le nombre ou le littéral de chaîne dans le champ Contenu de la réponse.
  4. Pour vérifier la configuration, cliquez sur Test (Tester).

Pour configurer le test de disponibilité afin qu'il échoue lorsqu'un chemin JSONpath spécifique dans le si les données de réponse correspondent à un littéral de chaîne, utilisez les paramètres suivants:

  1. Sélectionnez Ne correspond pas sur JSONPath dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez le chemin d'accès dans le champ JSONPath.
  3. Saisissez le nombre ou le littéral de chaîne dans le champ Contenu de la réponse.
  4. Pour vérifier la configuration, cliquez sur Tester.

API Cloud Monitoring

Pour configurer la vérification de l'état de fonctionnement afin qu'elle réussisse lorsqu'un champ spécifique de la réponse au format JSON correspond à un nombre ou à une chaîne littérale, utilisez les valeurs suivantes pour l'objet 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"
    }
],
...

Pour configurer le test de disponibilité afin qu'il échoue lorsqu'un champ spécifique du La réponse au format JSON correspond à un nombre ou à un littéral de chaîne. Utilisez les valeurs suivantes pour l'objet 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"
    }
],
...

Pour illustrer le fonctionnement des tests de correspondance de chaîne JSONpath, examinons les données de réponse JSON suivantes :

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

Le tableau suivant affiche l'état de la vérification de l'état de disponibilité de la réponse précédente, mais pour différents chemins, valeurs de test et types de test :

État du test de disponibilité       
JSONpath Valeur de test Correspondances JSONpath JSONpath ne correspond pas
$.type "JSONpath" réussite échec
$.name "Sample" échec réussite
$.name "Sample Uptime Check" réussite échec
$.content[0].id 1 réussite échec
$.content[0].alias "Exact" réussite échec
$.content[0].enabled true réussite échec

Dans le tableau précédent, la colonne JSONpath identifie l'élément à test, et la colonne Valeur de test indique la valeur. Les deux colonnes suivantes spécifient le type de test et le résultat du test de disponibilité.

Comparer JSONPath à une expression régulière

Les correspondances d'expression régulière acceptent les correspondances avec une chaîne, un nombre, une valeur booléenne et des valeurs JSON nulles.

console Google Cloud

Pour configurer le test de disponibilité de sorte qu'il réussisse lorsqu'un chemin JSON spécifique dans les données de réponse correspond à une expression régulière, utilisez les paramètres suivants :

  1. Sélectionnez Correspond à JSONPath dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez le chemin d'accès dans le champ JSONPath.
  3. Saisissez l'expression régulière dans le champ Response content (Contenu de la réponse).
  4. Pour vérifier la configuration, cliquez sur Test (Tester).

Pour configurer le test de disponibilité afin qu'il échoue lorsqu'un chemin JSONpath spécifique dans le si les données de réponse correspondent à une expression régulière, utilisez les paramètres suivants:

  1. Sélectionnez Ne correspond pas sur JSONPath dans le menu Type de correspondance du contenu de la réponse.
  2. Saisissez le chemin d'accès dans le champ JSONPath.
  3. Saisissez l'expression régulière dans le champ Response content (Contenu de la réponse).
  4. Pour vérifier la configuration, cliquez sur Tester.

API Cloud Monitoring

Pour configurer la vérification de l'état de fonctionnement afin qu'elle réussisse lorsqu'un champ spécifique de la réponse au format JSON correspond à une expression régulière, utilisez les valeurs suivantes pour l'objet ContentMatcher :

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

Pour configurer le test de disponibilité afin qu'il échoue lorsqu'un champ spécifique du Une réponse au format JSON correspond à une expression régulière. Utilisez le code suivant : pour l'objet 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"
    }
],
...

Pour illustrer le fonctionnement des tests d'expressions régulières JSONpath, Prenez en compte les données de réponse JSON suivantes:

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

Le tableau suivant affiche l'état du test de disponibilité dans la réponse précédente, mais pour des chemins, des expressions régulières et des types de test différents:

État du test de disponibilité       
JSONpath Regex JSONPath correspond à l'expression régulière JSONPath ne correspond pas à l'expression régulière
$.type [A-Z]{4}Path réussite échec
$.name Sample échec réussite
$.name .*Sample.* réussite échec
$.content[1].id 2 réussite échec
$.content[1].phone "[12345]{2}" réussite échec
$.content[1].enabled f.* réussite échec

Dans le tableau précédent, la colonne JSONpath identifie l'élément à tester, et la colonne Regex liste l'expression régulière. Les deux colonnes suivantes spécifient le type de test et le résultat du test de disponibilité.

Étape suivante