Mit der Antwortvalidierung können Sie prüfen, ob eine überwachte Ressource bei einer Verfügbarkeitsdiagnose sowohl einen erwarteten HTTP-Statuscode als auch einen bestimmten Nutzlastinhalt zurückgibt.
Standardmäßig wird bei HTTP- und HTTPS-Verfügbarkeitsdiagnosen nur geprüft, ob der Statuscode im Bereich 2xx liegt. Der Antworttext wird nicht untersucht. Sie können diese Einstellungen anpassen, um zusätzliche Statuscodes wie 3xx zu akzeptieren oder zu prüfen, ob die Nutzlast mit bestimmten Strings, regulären Ausdrücken oder JSON-Pfaden übereinstimmt.
Antwortdaten prüfen
Sie können Cloud Monitoring so konfigurieren, dass die Antwortdaten einer geprüften Ressource validiert werden, wenn Sie eine Verfügbarkeitsdiagnose erstellen oder bearbeiten.
Console
So erstellen Sie eine Verfügbarkeitsdiagnose, mit der die Antwortdaten validiert werden:
-
Rufen Sie in der Google Cloud Console die Seite Verfügbarkeitsdiagnosen
auf:
Verfügbarkeitsdiagnosen aufrufen
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Wählen Sie in der Symbolleiste der Google Cloud Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt aus.
- Klicken Sie auf Verfügbarkeitsdiagnose erstellen.
- Geben Sie einen Titel ein und klicken Sie auf Weiter.
- Geben Sie das Ziel ein und klicken Sie auf Weiter.
Konfigurieren Sie die Antwortenvalidierung:
- Wenn Sie die Antwortdaten validieren möchten, muss Inhaltsabgleich aktiviert angezeigt werden. Füllen Sie dann die Felder zur 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 werden bei HTTP-Verfügbarkeitsdiagnosen alle
2xx-Antworten als erfolgreiche Antworten gekennzeichnet.
Klicken Sie auf Weiter und schließen Sie die Konfiguration der Uptime-Prüfung ab.
REST
Wenn Sie eine Verfügbarkeitsdiagnose konfigurieren möchten, um die Antwortdaten zu validieren, 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 unterContentMatcherOption.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 einJsonPathMatcher-Objekt, das beschreibt, welcher JSON-Pfad durchsucht werden soll und wie der Vergleich durchgeführt werden soll.Lassen Sie dieses Feld weg, es sei denn, bei der Verfügbarkeitsdiagnose wird ein bestimmter JSONPath validiert.
Im Rest dieses Dokuments wird beschrieben, wie Sie die Optionen für den Inhaltsabgleich verwenden.
Optionen zum Validieren der Antwortdaten
In diesem Abschnitt werden die Strategien für den String-Abgleich beschrieben, die Sie verwenden können, um die von einer geprüften Ressource gesendete Antwort zu validieren. Für jede Strategie geben Sie einen Wert an und legen fest, ob das Auffinden dieses Werts in den Antwortdaten dazu führt, dass der Uptime-Check bestanden oder nicht bestanden wird.
Möglicherweise wird nicht die gesamte Antwort einer geprüften Ressource durchsucht:
- HTTP- und HTTPS-Verfügbarkeitsdiagnosen: Die ersten 4 MB werden durchsucht.
- TCP-Verfügbarkeitsdiagnosen: Die ersten 1 MB werden durchsucht.
Nach einem wörtlichen Teilstring suchen
Console
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn die Antwortdaten einen Literal-Teilstring enthalten, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Art der Übereinstimmung für Antwortinhalte die Option Enthält aus.
- Geben Sie den Literal-Teilstring in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
Wenn die Verfügbarkeitsdiagnose fehlschlagen soll, wenn die Antwortdaten einen bestimmten Teilstring enthalten, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Typ der Übereinstimmung für Antwortinhalte die Option Enthält nicht aus.
- Geben Sie den Literal-Teilstring in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
REST
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn die Antwortdaten eine bestimmte Teilzeichenfolge enthalten, verwenden Sie die folgenden Werte:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "CONTAINS_STRING"
}
],
...
Wenn die Verfügbarkeitsdiagnose fehlschlagen soll, wenn die Antwortdaten einen Literal-Teilstring enthalten, verwenden Sie die folgenden Werte:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "NOT_CONTAINS_STRING"
}
],
...
In der folgenden Tabelle sehen Sie den Status der Uptime-Prüfung für verschiedene Antwortdaten, Teststrings und Testtypen:
| Status der Verfügbarkeitsdiagnose | |||
|---|---|---|---|
| Antwortdaten | Test string | Enthält | Enthält nicht |
abcd |
abcd |
pass | Nicht bestanden |
abc |
abcd |
Nicht bestanden | pass |
abc |
a |
pass | Nicht bestanden |
Uptime Checks |
Uptime |
pass | Nicht bestanden |
Uptime Checks |
uptime |
Nicht bestanden | pass |
In der vorherigen Tabelle wird in der Spalte Antwortdaten beschrieben, welche Daten von der geprüften Ressource zurückgegeben werden, und in der Spalte Teststring wird das Stringliteral aufgeführt. In den nächsten beiden Spalten werden der Testtyp und das Ergebnis der Uptime-Prüfung angegeben.
Mit einem regulären Ausdruck suchen
Console
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Übereinstimmungstyp für Antwortinhalte die Option Stimmt mit regulärem Ausdruck überein aus.
- Geben Sie im Feld Antwortinhalt einen regulären Ausdruck ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
Wenn die Verfügbarkeitsdiagnose fehlschlagen soll, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Übereinstimmungstyp für Antwortinhalte die Option Stimmt nicht mit Regex überein aus.
- Geben Sie im Feld Antwortinhalt einen regulären Ausdruck ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
REST
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen, verwenden Sie die folgenden Werte:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "MATCHES_REGEX"
}
],
...
Verwenden Sie die folgenden Werte, um die Verfügbarkeitsdiagnose so zu konfigurieren, dass sie fehlschlägt, wenn die Antwortdaten mit einem regulären Ausdruck übereinstimmen:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "NOT_MATCHES_REGEX"
}
],
...
In der folgenden Tabelle sehen Sie den Status der Uptime-Prüfung für verschiedene Antwortdaten, reguläre Ausdrücke und Testtypen:
| Status der Verfügbarkeitsdiagnose | |||
|---|---|---|---|
| Antwortdaten | Regex | Stimmt mit dem Regex überein | Stimmt nicht mit Regex überein |
abcd |
abcd |
pass | Nicht bestanden |
Uptime Checks |
[uU]ptime |
pass | Nicht bestanden |
Uptime Checks |
[a-z]{6} |
Nicht bestanden | pass |
Uptime Checks |
[a-zA-Z]{6} |
pass | Nicht bestanden |
In der vorherigen Tabelle wird in der Spalte Antwortdaten beschrieben, welche Daten von der geprüften Ressource zurückgegeben werden, und in der Spalte Regulärer Ausdruck wird der reguläre Ausdruck aufgeführt. In den nächsten beiden Spalten werden der Testtyp und das Ergebnis der Uptime-Prüfung angegeben.
In einem bestimmten Feld in einer JSON-Antwort suchen
Sie können eine Verfügbarkeitsdiagnose so konfigurieren, dass ein JSONPath validiert wird. Wenn Sie einen JSONPath-Test auswählen, wird ein Pfadwert mit einer Zahl, einem Stringliteral oder einem regulären Ausdruck verglichen:
- JSONPath mit einem Zahlen- oder Stringliteral vergleichen
- JSONPath mit einem regulären Ausdruck vergleichen
Wenn Sie einen JSONPath angeben, müssen Sie das Stammobjekt mit $. angeben und dann eine bestimmte Feldkennung angeben. Wenn die JSON-Antwort ein Array von Elementen enthält, verwenden Sie Klammern ([]), um das spezifische Arrayelement anzugeben, das abgeglichen werden soll. Die folgenden Beispiele veranschaulichen die Pfadsyntax:
$.typestimmt mit dem Feldtypeeines Stammobjekts überein.$.[0].address.cityentspricht dem Feldcityim Objektaddress, das im ersten Array-Element der JSON-Antwort gespeichert ist.$.content[0].phoneentspricht dem Feldphonedes ersten Array-Elements des Feldscontent. Das Feldcontentist ein untergeordnetes Element des Stammobjekts.
Sie können einen Verfügbarkeitstest so konfigurieren, dass er mit mehreren Feldern übereinstimmt. Betrachten Sie das folgende JSON:
[
{
...
"address": {
...
"city": "Gwenborough",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
},
...
]
Wenn der gesamte Pfad des Felds geo im ersten Array-Element übereinstimmen soll, legen Sie den JSONPath auf $.[0].address.geo fest und geben Sie den vollständigen Wert in das Inhaltsfeld ein:
{
"lat": "-37.3159",
"lng": "81.1496"
}
Wenn Sie diese Optionen ausprobieren möchten, suchen Sie eine öffentliche Website, die eine JSON-Antwort zurückgibt.
JSONPath mit einem Zahlen- oder String-Literal vergleichen
Console
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem Stringliteral übereinstimmt, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Typ für den Abgleich des Antwortinhalts die Option Stimmt mit JSONPath überein aus.
- Geben Sie den Pfad in das Feld JSONPath ein.
- Geben Sie die Zahl oder das Stringliteral in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
Wenn die Verfügbarkeitsdiagnose fehlschlagen soll, wenn ein bestimmter JSONPath in den Antwortdaten mit einem Stringliteral übereinstimmt, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Typ für den Abgleich von Antwortinhalten die Option Stimmt nicht mit JSONPath überein aus.
- Geben Sie den Pfad in das Feld JSONPath ein.
- Geben Sie die Zahl oder das Stringliteral in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
REST
Wenn der Uptime-Check bestanden werden soll, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einer Zahl oder einem Stringliteral übereinstimmt, verwenden Sie die folgenden Werte für das ContentMatcher-Objekt:
...
"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 der Uptime-Check fehlschlagen soll, wenn ein bestimmtes Feld in der JSON-formatierten Antwort mit einer Zahl oder einem Stringliteral übereinstimmt, verwenden Sie die folgenden Werte für das ContentMatcher-Objekt:
...
"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"
}
}
],
...
Zur Veranschaulichung der Funktionsweise der JSONPath-String-Abgleichstests sehen Sie sich die folgenden JSON-Antwortdaten an:
{
"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 sehen Sie den Uptime-Prüfstatus für die vorherige Antwort, jedoch für verschiedene Pfade, Testwerte und Testtypen:
| Status der Verfügbarkeitsdiagnose | |||
|---|---|---|---|
| JSONpath | Testwert | JSONPath-Übereinstimmungen | JSONPath stimmt nicht überein |
$. |
"JSONpath" |
pass | Nicht bestanden |
$. |
"Sample" |
Nicht bestanden | pass |
$. |
"Sample Uptime Check" |
pass | Nicht bestanden |
$. |
1 |
pass | Nicht bestanden |
$. |
"Exact" |
pass | Nicht bestanden |
$. |
true |
pass | Nicht bestanden |
In der vorherigen Tabelle wird in der Spalte JSONpath das zu testende Element und in der Spalte Testwert der Wert aufgeführt. In den nächsten beiden Spalten werden der Testtyp und das Ergebnis der Verfügbarkeitsdiagnose angegeben.
JSONPath mit einem regulären Ausdruck vergleichen
Reguläre Ausdrücke unterstützen den Abgleich von JSON-Werten vom Typ „String“, „Number“, „Boolean“ und „Null“.
Console
Wenn die Verfügbarkeitsdiagnose erfolgreich sein soll, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem regulären Ausdruck übereinstimmt, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Typ für den Abgleich des Antwortinhalts die Option Stimmt mit JSONPath überein aus.
- Geben Sie den Pfad in das Feld JSONPath ein.
- Geben Sie den regulären Ausdruck in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
Wenn die Verfügbarkeitsdiagnose fehlschlagen soll, wenn ein bestimmter JSON-Pfad in den Antwortdaten mit einem regulären Ausdruck übereinstimmt, verwenden Sie die folgenden Einstellungen:
- Wählen Sie im Menü Typ für den Abgleich von Antwortinhalten die Option Stimmt nicht mit JSONPath überein aus.
- Geben Sie den Pfad in das Feld JSONPath ein.
- Geben Sie den regulären Ausdruck in das Feld Antwortinhalt ein.
- Klicken Sie auf Testen, um die Konfiguration zu prüfen.
REST
Wenn der Uptime-Check bestanden werden soll, 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"
}
}
],
...
Wenn der Uptime-Check fehlschlagen soll, wenn ein bestimmtes Feld in der JSON-formatierten Antwort einem regulären Ausdruck entspricht, verwenden Sie die folgenden Werte für das ContentMatcher-Objekt:
...
"contentMatchers": [
{
"content" : "Set to the regular expression to be matched.",
"matcher" : "NOT_MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "REGEX_MATCH"
}
}
],
...
Um zu veranschaulichen, wie die JSONPath-Tests mit regulären Ausdrücken funktionieren, sehen Sie sich die folgenden JSON-Antwortdaten an:
{
"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 sehen Sie den Status der Uptime-Prüfung für die vorherige Antwort, jedoch für verschiedene Pfade, reguläre Ausdrücke und Testtypen:
| Status der Verfügbarkeitsdiagnose | |||
|---|---|---|---|
| JSONpath | Regex | JSONPath stimmt mit dem regulären Ausdruck überein | JSONPath stimmt nicht mit Regex überein |
$. |
[A-Z]{4}Path |
pass | Nicht bestanden |
$. |
Sample |
Nicht bestanden | pass |
$. |
. |
pass | Nicht bestanden |
$. |
2 |
pass | Nicht bestanden |
$. |
"[12345]{2}" |
pass | Nicht bestanden |
$. |
f. |
pass | Nicht bestanden |
In der vorherigen Tabelle wird in der Spalte JSONpath angegeben, welches Element getestet werden soll, und in der Spalte Regex wird der reguläre Ausdruck aufgeführt. In den nächsten beiden Spalten werden der Testtyp und das Ergebnis der Verfügbarkeitsdiagnose angegeben.
Nächste Schritte
- Verfügbarkeitsdiagnose erstellen
- Verfügbarkeitsdiagnosen verwalten
- Benachrichtigungsrichtlinien für Verfügbarkeitsdiagnosen erstellen