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 défaut, les tests de disponibilité HTTP vérifient que le code de réponse est 2xx. De plus, par défaut, les données de réponse ne sont pas validées. Vous pouvez toutefois modifier ces paramètres. Par exemple, vous pouvez configurer un test de disponibilité HTTP pour accepter les 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 non contenir pour que le test de disponibilité aboutisse.

Comment valider les données de réponse

Vous pouvez configurer Cloud Monitoring pour qu'il valide les données de réponse d'une ressource vérifié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 le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Tests de disponibilité:

    Accéder aux tests de disponibilité

  2. Cliquez sur Créer un test de disponibilité.
  3. Saisissez un titre, puis cliquez sur Suivant.
  4. Renseignez le champ Target (Cible), puis cliquez sur Next (Suivant).
  5. Configurez la validation des réponses:

    • Pour valider les données de réponse, assurez-vous que La correspondance de contenu est activée est affichée, puis remplissez les champs liés à la validation de la réponse. Pour en savoir plus sur ces options, consultez la section suivante de ce document.
    • Pour les tests de disponibilité HTTP, configurez les codes de réponse acceptables. Par défaut, les tests de disponibilité HTTP marquent n'importe quelle réponse 2xx comme une réponse réussie.
  6. Cliquez sur Suivant, puis configurez le test de disponibilité.

API Cloud Monitoring

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

Les objets ContentMatcher contiennent les champs suivants:

  • matcher: décrit le mode de comparaison. 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. Sa valeur est un littéral de chaîne ou une expression régulière.

  • jsonPathMatcher: stocke un objet JsonPathMatcher qui décrit le JSONpath à rechercher et comment effectuer la comparaison.

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

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

Options pour valider les 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 vérifié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é.

La réponse entière d'une ressource vérifiée peut ne pas être recherchée:

  • Tests de disponibilité HTTP et HTTPS: la recherche est effectuée dans les 4 premiers Mo.
  • 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é à transmettre 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 Tester.

Pour configurer l'échec du test de disponibilité 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 Tester.

API Cloud Monitoring

Pour configurer le test de disponibilité à transmettre 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": "CONTAINS_STRING"
    }
],
...

Pour configurer l'échec du test de disponibilité 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 affiche l'état du test de disponibilité pour différents types de données de réponse, chaînes de test et types de test:

État du test de disponibilité       
Données des réponses 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 répertorie le littéral de chaîne. Les deux colonnes suivantes spécifient 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

Pour configurer le test de disponibilité à réussir 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 l'échec du test de disponibilité 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 Tester.

API Cloud Monitoring

Pour configurer le test de disponibilité à réussir 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"
    }
],
...

Pour configurer l'échec du test de disponibilité 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": "NOT_MATCHES_REGEX"
    }
],
...

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

État du test de disponibilité       
Données des réponses Expression régulière 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 répertorie l'expression régulière. Les deux colonnes suivantes spécifient 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, un littéral de chaîne ou une expression régulière:

Lorsque vous spécifiez un JSONpath, vous devez spécifier l'objet racine avec $., puis suivre ce chemin avec 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 à mettre en correspondance. Les exemples suivants illustrent la syntaxe de 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 de 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. Prenons l'exemple du code JSON suivant:

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

Pour correspondre au chemin d'accès complet du champ geo dans le premier élément de tableau, définissez le JSONpath sur $.[0].address.geo, puis saisissez la valeur complète dans le champ de contenu:

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

Si vous souhaitez tester ces options, recherchez un site Web public qui renvoie une réponse JSON. Pour obtenir un exemple, consultez la section Test JSON.

Comparer un chemin JSONpath à un littéral numérique ou de chaîne

console Google Cloud

Pour configurer le test de disponibilité à transmettre lorsqu'un JSONpath spécifique dans les données de réponse correspond à un littéral de chaîne, utilisez les paramètres suivants:

  1. Dans le menu Type de correspondance du contenu de la réponse, sélectionnez Correspond à JSONPath.
  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.

Pour configurer l'échec du test de disponibilité lorsqu'un JSONpath spécifique dans les données de réponse correspond à un littéral de chaîne, utilisez les paramètres suivants:

  1. Dans le menu Type de correspondance du contenu de la réponse, sélectionnez Ne correspond pas à JSONPath.
  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 le test de disponibilité à réussir lorsqu'un champ spécifique de 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" : "MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "EXACT_MATCH"
    }
],
...

Pour configurer l'échec du test de disponibilité lorsqu'un champ spécifique de 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înes JSONpath, prenons 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é de la réponse précédente, mais pour différents chemins d'accès, valeurs de test et types de tests:

État du test de disponibilité       
JSONpath Valeur de test Correspondances JSONpath Le fichier 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 à tester et la colonne Test value (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'expressions régulières acceptent la correspondance avec une chaîne, un nombre, une valeur booléenne et des valeurs JSON nulles.

console Google Cloud

Pour configurer le test de disponibilité à transmettre lorsqu'un JSONpath spécifique dans les données de réponse correspond à une expression régulière, utilisez les paramètres suivants:

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

Pour configurer l'échec du test de disponibilité lorsqu'un JSONpath spécifique dans les données de réponse correspond à une expression régulière, utilisez les paramètres suivants:

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

API Cloud Monitoring

Pour configurer le test de disponibilité à réussir 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 l'échec du test de disponibilité 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" : "NOT_MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "REGEX_MATCH"
    }
],
...

Pour illustrer le fonctionnement des tests d'expression régulière JSONpath, prenons 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é de la réponse précédente, mais pour différents chemins d'accès, expressions régulières et types de test:

État du test de disponibilité       
JSONpath Expression régulière 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 répertorie l'expression régulière. Les deux colonnes suivantes spécifient le type de test et le résultat du test de disponibilité.

Étapes suivantes