Antwortdaten validieren

In diesem Dokument wird beschrieben, wie Sie eine Verfügbarkeitsdiagnose konfigurieren, um den HTTP-Antwortcode und die Antwortdaten zu validieren, die von einer geprüften Ressource gesendet werden. Standardmäßig prüfen HTTP-Verfügbarkeitsdiagnosen, ob der Antwortcode 2xx lautet. Außerdem werden die Antwortdaten standardmäßig nicht validiert. Diese Einstellungen lassen sich jedoch ändern. Sie können beispielsweise eine HTTP-Verfügbarkeitsdiagnose so konfigurieren, dass die Antwortcodes 2xx und 3xx akzeptiert werden. Sie können für alle Verfügbarkeitsdiagnosen einen Wert angeben, den die Antwortdaten enthalten müssen oder nicht enthalten sein müssen, damit die Verfügbarkeitsdiagnose erfolgreich ist.

Antwortdaten validieren

Sie können Cloud Monitoring beim Erstellen oder Bearbeiten einer Verfügbarkeitsdiagnose so konfigurieren, dass die Antwortdaten einer geprüften Ressource validiert werden.

Google Cloud Console

So erstellen Sie eine Verfügbarkeitsdiagnose, die die Antwortdaten validiert:

  1. Wählen Sie im Navigationsbereich der Google Cloud Console Monitoring und dann  Verfügbarkeitsdiagnosen aus:

    Verfügbarkeitsdiagnosen aufrufen

  2. Klicken Sie auf Verfügbarkeitsdiagnose erstellen.
  3. Geben Sie einen Titel ein und klicken Sie auf Weiter.
  4. Geben Sie das Ziel ein und klicken Sie auf Weiter.
  5. Konfigurieren Sie die Antwortvalidierung:

    • Achten Sie zum Validieren der Antwortdaten darauf, dass Inhaltsabgleich aktiviert ist angezeigt wird. Füllen Sie dann die Felder für die Antwortvalidierung aus. Informationen zu diesen Optionen finden Sie im nächsten Abschnitt dieses Dokuments.
    • Konfigurieren Sie für die HTTP-Verfügbarkeitsdiagnosen die zulässigen Antwortcodes. Standardmäßig markieren HTTP-Verfügbarkeitsdiagnosen jede 2xx-Antwort als erfolgreiche Antwort.
  6. Klicken Sie auf Weiter und schließen Sie die Konfiguration der Verfügbarkeitsdiagnose ab.

Cloud Monitoring API

Wenn Sie eine Verfügbarkeitsdiagnose zum Validieren der Antwortdaten konfigurieren möchten, füllen Sie das contentMatchers-Array des UptimeCheckConfig-Objekts aus.

ContentMatcher-Objekte enthalten die folgenden Felder:

  • matcher: Beschreibt, wie der Vergleich durchgeführt wird. Eine Liste der Werte finden Sie unter ContentMatcherOption.

    Verwenden Sie nicht den Wert CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: Speichert den Wert, nach dem in den Antwortdaten gesucht werden soll. Der Wert ist ein Stringliteral oder ein regulärer Ausdruck.

  • jsonPathMatcher: Speichert ein JsonPathMatcher-Objekt, das beschreibt, welcher JSON-Pfad gesucht werden soll und wie der Vergleich durchgeführt wird.

    Lassen Sie dieses Feld aus, es sei denn, die Verfügbarkeitsdiagnose prüft einen bestimmten JSON-Pfad.

Im weiteren Verlauf dieses Dokuments wird die Verwendung der Optionen für den Inhaltsabgleich beschrieben.

Optionen zum Validieren der Antwortdaten

In diesem Abschnitt werden die Strategien zum Abgleich von Strings beschrieben, mit denen Sie die Antwort validieren können, die von einer geprüften Ressource gesendet wird. Sie geben für jede Strategie einen Wert an und legen fest, ob die Verfügbarkeitsdiagnose erfolgreich ist oder fehlschlägt, wenn sie in den Antwortdaten gefunden wird.

Es kann sein, dass nicht die gesamte Antwort einer geprüften Ressource durchsucht wird:

  • HTTP- und HTTPS-Verfügbarkeitsdiagnosen: Die ersten 4 MB werden durchsucht.
  • TCP-Verfügbarkeitsdiagnosen: Das erste MB wird durchsucht.

Nach einem literalen Teilstring suchen

Google Cloud Console

Verwenden Sie die folgenden Einstellungen, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn die Antwortdaten einen literalen Teilstring enthalten:

  1. Wählen Sie im Menü Art der Übereinstimmung des Antwortinhalts die Option Enthält aus.
  2. Geben Sie den literalen Teilstring in das Feld Antwortinhalt ein.
  3. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Verwenden Sie die folgenden Einstellungen, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn die Antwortdaten einen literalen Teilstring enthalten:

  1. Wählen Sie im Menü Keyword-Option für Antwortinhalte die Option Enthält nicht aus.
  2. Geben Sie den literalen Teilstring in das Feld Antwortinhalt ein.
  3. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Cloud Monitoring API

Verwenden Sie die folgenden Werte, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn die Antwortdaten einen literalen Teilstring enthalten:

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

Verwenden Sie die folgenden Werte, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn die Antwortdaten einen literalen Teilstring enthalten:

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

In der folgenden Tabelle wird der Status der Verfügbarkeitsdiagnose für verschiedene Antwortdaten, Teststrings und Testtypen angezeigt:

Status der Verfügbarkeitsdiagnose       
Antwortdaten Test-String Enthält Enthält nicht
abcd abcd Bestanden Nicht bestanden
abc abcd Nicht bestanden Bestanden
abc a Bestanden Nicht bestanden
Uptime Checks Uptime Bestanden Nicht bestanden
Uptime Checks uptime Nicht bestanden Bestanden

In der vorherigen Tabelle werden in der Spalte Antwortdaten die Daten beschrieben, die von der geprüften Ressource zurückgegeben werden. In der Spalte Teststring wird das Stringliteral aufgelistet. Die nächsten beiden Spalten geben den Typ des Tests und das Ergebnis der Verfügbarkeitsdiagnose an.

Mit regulärem Ausdruck suchen

Google Cloud Console

Verwenden Sie die folgenden Einstellungen, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen:

  1. Wählen Sie im Menü Übereinstimmungstyp der Antwort die Option Stimmt mit dem Regex überein aus.
  2. Geben Sie in das Feld Antwortinhalt einen regulären Ausdruck ein.
  3. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Verwenden Sie die folgenden Einstellungen, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn die Antwortdaten einem regulären Ausdruck entsprechen:

  1. Wählen Sie im Menü Übereinstimmungstyp des Antwortinhalts die Option Stimmt nicht mit dem Regex überein aus.
  2. Geben Sie in das Feld Antwortinhalt einen regulären Ausdruck ein.
  3. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Cloud Monitoring API

Verwenden Sie die folgenden Werte, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen:

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

Verwenden Sie die folgenden Werte, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn die Antwortdaten einem regulären Ausdruck entsprechen:

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

In der folgenden Tabelle wird der Status der Verfügbarkeitsdiagnose für verschiedene Antwortdaten, reguläre Ausdrücke und Testtypen angezeigt:

Status der Verfügbarkeitsdiagnose       
Antwortdaten Regex Stimmt mit dem Regex überein Stimmt nicht mit dem Regex überein
abcd abcd Bestanden Nicht bestanden
Uptime Checks [uU]ptime Bestanden Nicht bestanden
Uptime Checks [a-z]{6} Nicht bestanden Bestanden
Uptime Checks [a-zA-Z]{6} Bestanden Nicht bestanden

In der vorherigen Tabelle beschreibt die Spalte Antwortdaten die Daten, die von der geprüften Ressource zurückgegeben werden, während die Spalte Regex den regulären Ausdruck auflistet. Die nächsten beiden Spalten geben den Typ des Tests und das Ergebnis der Verfügbarkeitsdiagnose an.

In einem bestimmten Feld in einer JSON-Antwort suchen

Sie können eine Verfügbarkeitsdiagnose konfigurieren, um einen JSON-Pfad zu validieren. Wenn Sie einen JSONpath-Test auswählen, wird ein Pfadwert mit einer Zahl, einem Stringliteral oder einem regulären Ausdruck verglichen:

Wenn Sie einen JSON-Pfad angeben, müssen Sie das Stammobjekt mit $. und anschließend mit einer bestimmten Feldkennung angeben. Wenn die JSON-Antwort ein Array von Elementen enthält, verwenden Sie eckige Klammern ([]), um das gewünschte Arrayelement anzugeben. Die folgenden Beispiele veranschaulichen die Pfadsyntax:

  • $.type entspricht dem Feld type eines Stammobjekts.
  • $.[0].address.city entspricht dem Feld city im Objekt address, das im ersten Arrayelement der JSON-Antwort gespeichert ist.
  • $.content[0].phone entspricht dem Feld phone des ersten Arrayelements des Felds content. Das Feld content ist dem Stammobjekt untergeordnet.

Sie können einen Verfügbarkeitstest konfigurieren, um mehrere Felder abzugleichen. Betrachten Sie die folgende JSON-Datei:

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

Damit der gesamte Pfad des Felds geo im ersten Arrayelement übereinstimmt, setzen Sie den JSON-Pfad auf $.[0].address.geo und geben Sie den vollständigen Wert in das Inhaltsfeld ein:

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

Wenn Sie mit diesen Optionen experimentieren möchten, suchen Sie nach einer öffentlichen Website, die eine JSON-Antwort zurückgibt. Weitere Informationen finden Sie unter JSON-Test.

JSONpath mit einer Zahl oder einem Stringliteral vergleichen

Google Cloud Console

Verwenden Sie die folgenden Einstellungen, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem Stringliteral übereinstimmt:

  1. Wählen Sie im Menü Art der Übereinstimmung des Antwortinhalts die Option Übereinstimmung mit JSONPath aus.
  2. Geben Sie den Pfad in das Feld JSONPath ein.
  3. Geben Sie die Zahl oder das Stringliteral in das Feld Antwortinhalt ein.
  4. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Verwenden Sie die folgenden Einstellungen, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem Stringliteral übereinstimmt:

  1. Wählen Sie im Menü Art der Übereinstimmung des Antwortinhalts die Option Stimmt nicht mit JSONPath aus.
  2. Geben Sie den Pfad in das Feld JSONPath ein.
  3. Geben Sie die Zahl oder das Stringliteral in das Feld Antwortinhalt ein.
  4. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Cloud Monitoring API

Wenn die Verfügbarkeitsdiagnose so konfiguriert werden soll, dass sie bestanden wird, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einer Zahl oder einem Stringliteral übereinstimmt, verwenden Sie die folgenden Werte für das Objekt 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"
    }
],
...

Wenn die Verfügbarkeitsdiagnose fehlschlägt, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einer Zahl oder einem Stringliteral übereinstimmt, verwenden Sie die folgenden Werte für das Objekt 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"
    }
],
...

Betrachten Sie die folgenden JSON-Antwortdaten, um zu veranschaulichen, wie die JSONpath-Stringabgleichstests funktionieren:

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

In der folgenden Tabelle wird der Status der Verfügbarkeitsdiagnose aus der vorherigen Antwort angezeigt, jedoch für unterschiedliche Pfade, Testwerte und Testtypen:

Status der Verfügbarkeitsdiagnose       
JSONpath Testwert JSONpath-Übereinstimmungen JSON-Pfad stimmt nicht überein
$.type "JSONpath" Bestanden Nicht bestanden
$.name "Sample" Nicht bestanden Bestanden
$.name "Sample Uptime Check" Bestanden Nicht bestanden
$.content[0].id 1 Bestanden Nicht bestanden
$.content[0].alias "Exact" Bestanden Nicht bestanden
$.content[0].enabled true Bestanden Nicht bestanden

In der vorherigen Tabelle gibt die Spalte JSONpath an, welches Element getestet werden soll, und die Spalte Testwert enthält den Wert. In den nächsten beiden Spalten werden die Art des Tests und das Ergebnis der Verfügbarkeitsdiagnose angegeben.

JSONpath mit einem regulären Ausdruck vergleichen

Mit regulären Ausdrücken wird der Abgleich von Strings, Zahlen, booleschen Werten und JSON-Null-Werten unterstützt.

Google Cloud Console

Verwenden Sie die folgenden Einstellungen, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie bestanden wird, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem regulären Ausdruck übereinstimmt:

  1. Wählen Sie im Menü Art der Übereinstimmung des Antwortinhalts die Option Übereinstimmung mit JSONPath aus.
  2. Geben Sie den Pfad in das Feld JSONPath ein.
  3. Geben Sie den regulären Ausdruck in das Feld Antwortinhalt ein.
  4. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Verwenden Sie die folgenden Einstellungen, damit die Verfügbarkeitsdiagnose fehlschlägt, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem regulären Ausdruck übereinstimmt:

  1. Wählen Sie im Menü Art der Übereinstimmung des Antwortinhalts die Option Stimmt nicht mit JSONPath aus.
  2. Geben Sie den Pfad in das Feld JSONPath ein.
  3. Geben Sie den regulären Ausdruck in das Feld Antwortinhalt ein.
  4. Klicken Sie auf Testen, um die Konfiguration zu prüfen.

Cloud Monitoring API

Wenn die Verfügbarkeitsdiagnose so konfiguriert werden soll, dass sie bestanden wird, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einem regulären Ausdruck übereinstimmt, verwenden Sie die folgenden Werte für das ContentMatcher-Objekt:

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

Damit die Verfügbarkeitsdiagnose fehlschlägt, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einem regulären Ausdruck übereinstimmt, verwenden Sie die folgenden Werte für das Objekt 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"
    }
],
...

Betrachten Sie die folgenden JSON-Antwortdaten, um zu veranschaulichen, wie die JSONpath-Tests für reguläre Ausdrücke funktionieren:

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

In der folgenden Tabelle wird der Status der Verfügbarkeitsdiagnose aus der vorherigen Antwort angezeigt, jedoch für unterschiedliche Pfade, reguläre Ausdrücke und Testtypen:

Status der Verfügbarkeitsdiagnose       
JSONpath Regex JSON-Pfad stimmt mit Regex überein JSON-Pfad stimmt nicht mit Regex überein
$.type [A-Z]{4}Path Bestanden Nicht bestanden
$.name Sample Nicht bestanden Bestanden
$.name .*Sample.* Bestanden Nicht bestanden
$.content[1].id 2 Bestanden Nicht bestanden
$.content[1].phone "[12345]{2}" Bestanden Nicht bestanden
$.content[1].enabled f.* Bestanden Nicht bestanden

In der vorherigen Tabelle gibt die Spalte JSONpath an, welches Element getestet werden soll, und die Spalte Regex listet den regulären Ausdruck auf. In den nächsten beiden Spalten werden die Art des Tests und das Ergebnis der Verfügbarkeitsdiagnose angegeben.

Nächste Schritte