Öffentliche Verfügbarkeitsdiagnosen erstellen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In diesem Dokument wird beschrieben, wie Sie eine öffentliche Verfügbarkeitsdiagnose erstellen. Eine öffentliche Verfügbarkeitsdiagnose kann Anfragen von mehreren Standorten weltweit an öffentlich verfügbare URLs oder Google Cloud-Ressourcen senden, um festzustellen, ob die Ressource reagiert. Informationen zum Erstellen von Verfügbarkeitsdiagnosen für private Netzwerke finden Sie unter Private Verfügbarkeitsdiagnosen erstellen.

Mit öffentlichen Verfügbarkeitsdiagnosen kann die Verfügbarkeit der folgenden überwachten Ressourcen bestimmt werden:

Links zu Informationen zum Verwalten und Monitoring Ihrer Verfügbarkeitsdiagnosen finden Sie im Abschnitt Weitere Informationen in diesem Dokument.

Verfügbarkeitsdiagnosen

Bei HTTP und HTTPS werden allen URL-Weiterleitungen gefolgt und die endgültige Antwort, die die Verfügbarkeitsdiagnose empfängt, wird zur Bewertung von Erfolgskriterien verwendet. Bei HTTPS-Prüfungen wird die Ablaufzeit des SSL-Zertifikats basierend auf dem Serverzertifikat berechnet, das in der endgültigen Antwort empfangen wurde.

Damit eine Verfügbarkeitsdiagnose ausgeführt werden kann, müssen folgende Bedingungen erfüllt sein:

  • Der HTTP-Status muss den von Ihnen angegebenen Kriterien entsprechen.
  • Die Antwortdaten enthalten nicht den erforderlichen Inhalt oder der erforderliche Inhalt ist vorhanden.

Bei Verfügbarkeitsdiagnosen werden keine Seiten-Assets geladen oder JavaScript ausgeführt und in der Standardkonfiguration einer Verfügbarkeitsdiagnose ist keine Authentifizierung enthalten.

Hinweis

Gehen Sie folgendermaßen vor:

  1. Prüfen Sie, ob die Ressource, die Sie prüfen möchten, entweder einen öffentlichen Endpunkt hat oder sich hinter einer konfigurierbaren Firewall befindet.

    Für alle anderen Konfigurationen müssen Sie eine private Verfügbarkeitsdiagnose erstellen. Weitere Informationen finden Sie unter Private Verfügbarkeitsdiagnosen erstellen.

  2. Wenn Ihre Ressource durch eine Firewall geschützt ist, konfigurieren Sie sie so, dass eingehender Traffic von den IP-Adressen der Server für die Verfügbarkeitsdiagnose zugelassen wird. Weitere Informationen finden Sie unter IP-Adressen von Verfügbarkeitsdiagnosen auflisten.

  3. Konfigurieren Sie die Benachrichtigungskanäle, die Sie für den Empfang von Benachrichtigungen verwenden möchten. Wir empfehlen, mehrere Arten von Benachrichtigungskanälen zu erstellen. Weitere Informationen finden Sie unter Benachrichtigungskanäle verwalten.

  4. Geben Sie mindestens drei Verfügbarkeitsdiagnosen an. Die Region USA der Verfügbarkeitsdiagnose hat drei Diagnosen. Die Regionen EUROPE, SOUTH_AMERICA und ASIA_PACIFIC der Verfügbarkeitsdiagnose haben jeweils eine Diagnose.

    Wenn Sie Global in der Google Cloud Console oder REGION_UNSPECIFIED bei Verwendung der API auswählen, werden Verfügbarkeitsdiagnosen in allen Regionen für Verfügbarkeitsdiagnosen ausgeführt.

Verfügbarkeitsdiagnose erstellen

In diesem Abschnitt wird das Erstellen und Konfigurieren von Verfügbarkeitsdiagnosen erläutert.

Console

Der Ablauf zum Erstellen einer Verfügbarkeitsdiagnose wird aktualisiert. Informationen zur Verwendung des alten Ablaufs, der allgemein verfügbar ist, finden Sie auf dem Tab Legacy. Informationen zum aktualisierten Ablauf finden Sie auf dem Tab Vorschau.

Alt

So erstellen Sie eine Verfügbarkeitsdiagnose mit der Google Cloud Console:

  1. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:
    Zu Monitoring
  2. Wählen Sie im Navigationsbereich Verfügbarkeitsdiagnosen aus.
  3. Deaktivieren Sie in der Symbolleiste die Ein-/Aus-Schaltfläche mit dem Label Vorschauablauf.
  4. Klicken Sie auf Verfügbarkeitsdiagnose erstellen.

    Dialogfeld zum Erstellen einer Verfügbarkeitsdiagnose

  5. Geben Sie einen aussagekräftigen Titel für die Verfügbarkeitsdiagnose ein.

  6. Optional: So fügen Sie der Verfügbarkeitsdiagnose benutzerdefinierte Labels hinzu:

    1. Klicken Sie auf Nutzerlabels anzeigen.
    2. Geben Sie im Feld Schlüssel einen Namen für das Label ein. Labelnamen müssen mit einem Kleinbuchstaben beginnen und können Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Geben Sie beispielsweise severity ein.
    3. Geben Sie in das Feld Wert einen Wert für das Label ein. Labelwerte können Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Geben Sie beispielsweise critical ein.
    4. Klicken Sie für jedes zusätzliche Label auf Nutzerlabel hinzufügen und geben Sie den Schlüssel und den Wert des Labels ein.
  7. Klicken Sie auf Weiter und geben Sie das Ziel der Verfügbarkeitsdiagnose an:

    1. Wählen Sie das Protokoll aus. Sie können HTTP, HTTPS oder TCP auswählen.

    2. Wählen Sie einen der folgenden Ressourcentypen aus:

      • URL: Eine IPv4-Adresse oder ein Hostname. Pfad und Port werden separat eingegeben.
      • Kubernetes LoadBalancer Service: Kubernetes-Service vom Typ LoadBalancer.
      • Instanz: Compute Engine- oder AWS EC2-Instanzen.
      • App Engine: Google App Engine-Anwendungen (Module)
      • Elastic Load Balancer: AWS-Lastenausgleichsmodul
    3. Füllen Sie die protokollspezifischen Felder aus:

      • Geben Sie für TCP-Prüfungen den Port ein.

      • Für HTTP- und HTTPS-Diagnosen können Sie einen Pfad im Host oder in der Ressource eingeben. Alle Verfügbarkeitsdiagnosen, die diese Protokolle verwenden, senden eine Anfrage an http://target/path. In diesem Ausdruck ist target für eine URL-Ressource ein Hostname oder eine IP-Adresse. Bei einer App Engine-Ressource ist target ein Hostname, der vom Dienstnamen abgeleitet wird. Für Instanz- und Load-Balancer-Ressourcen ist target eine IP-Adresse, die von dem Namen abgeleitet wird, den Sie für die Ressource oder die Gruppe von Ressourcen angegeben haben.

        Wenn Sie das Feld path leer lassen oder den Wert auf / setzen, wird die Anfrage an http://target/ gesendet.

        Wenn Sie beispielsweise eine Verfügbarkeitsdiagnose für die URL-Ressource example.com/tester ausführen möchten, setzen Sie das Feld Hostname auf example.com und das Feld Path auf /tester.

        Angenommen, Sie haben einen Server in App Engine mit einem Disponenten bereitgestellt, der / und /hello unterstützt. Lassen Sie das Feld Pfad leer, um die Verfügbarkeitsdiagnose für den Handler '/' durchzuführen. Setzen Sie den Wert des Felds Pfad auf /hello, um die Verfügbarkeitsdiagnose für den /hello-Handler auszuführen.

    4. Geben Sie die ressourcenspezifischen Felder ein:

      • Geben Sie für URL-Ressourcen den Hostnamen in das Feld Hostname ein. Geben Sie beispielsweise example.com ein.

      • Geben Sie für Kubernetes LoadBalancer Service-Ressourcen den Dienstnamen in das Feld Kubernetes-Dienst ein.

      • Geben Sie für App Engine-Ressourcen den Dienstnamen in das Feld Dienst ein.

      • Füllen Sie für Elastischer Load-Balancer und Instanzressourcen das Feld Gilt für so aus:

        • Wenn Sie eine einzelne Instanz oder einen einzelnen Load-Balancer prüfen möchten, wählen Sie Einzeln aus. Wählen Sie dann über das Menü die entsprechende Instanz oder den Load-Balancer aus.
        • Wählen Sie zum Prüfen einer Monitoring-Gruppe die Option Gruppe und dann im Menü den Gruppennamen aus.
    5. Optional: Mit dem Feld Prüfhäufigkeit können Sie festlegen, wie oft die Verfügbarkeitsdiagnose ausgeführt wird.

    6. Optional: Wenn Sie Prüflistenregionen auswählen oder SSL-Zertifikate, Authentifizierungen, Header und Ports für HTTP- und HTTPS-Diagnosen konfigurieren möchten, klicken Sie auf Weitere Zieloptionen:

      • Regionen: Wählen Sie die Regionen aus, in denen die Verfügbarkeitsdiagnosen Anfragen erhalten sollen. Eine Verfügbarkeitsdiagnose muss mindestens drei Diagnosen haben. In allen Regionen gibt es eine Diagnose, mit Ausnahme von USA mit drei Diagnosen. Die Standardeinstellung Global enthält alle Regionen.
      • Anfragemethode: Wählen Sie für HTTP-Diagnosen die Anfragemethode aus.
      • Body: Geben Sie für HTTP POST-Prüfungen den URL-codierten Text ein. Sie müssen die Codierung selbst vornehmen. Lassen Sie dieses Feld für alle anderen Prüfungen leer.
      • Hostheader: Füllen Sie dieses Feld aus, um virtuelle Hosts zu prüfen. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.
      • Port: Geben Sie eine Portnummer an.
      • Benutzerdefinierte Header: Geben Sie benutzerdefinierte Header an und verschlüsseln Sie sie bei Bedarf. Bei der Verschlüsselung werden die Werte des Headers im Formular ausgeblendet. Verwenden Sie die Verschlüsselung für Header im Zusammenhang mit der Authentifizierung, die für andere nicht sichtbar sein sollen.

      • Authentication (Authentifizierung): Geben Sie einen Nutzernamen und ein Passwort an. Diese Werte werden als Autorisierungsheader gesendet. Wenn Sie hier Werte festlegen, geben Sie keinen Autorisierungsheader an. Wenn Sie hingegen einen Autorisierungsheader angeben, legen Sie hier keine Werte fest. Passwörter werden im Formular immer ausgeblendet. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

      • SSL-Zertifikatsprüfung: Wenn Sie HTTPS für eine URL-Ressource ausgewählt haben, versucht der Dienst standardmäßig, eine Verbindung über HTTPS herzustellen, und validiert das SSL-Zertifikat. Verfügbarkeitsdiagnosen schlagen fehl, wenn eine URL ein ungültiges Zertifikat hat. Mögliche Gründe für ein ungültiges Zertifikat sind ein abgelaufenes Zertifikat, ein selbst signiertes Zertifikat, ein Zertifikat mit einem nicht übereinstimmenden Domainnamen und ein Zertifikat, das die AIA-Erweiterung (Authority Information Access) verwendet.

        Wählen Sie SSL-Zertifikate validieren aus, um eine HTTPS-Verfügbarkeitsdiagnose zur Validierung des SSL-Zertifikats zu erzwingen.

        Deaktivieren Sie SSL-Zertifikate validieren, um die SSL-Zertifikatsvalidierung zu deaktivieren.

        Wenn Sie SSL-Zertifikate mit AIA-Erweiterungen haben, müssen Sie die Validierung von SSL-Zertifikaten deaktivieren. Diese Zertifikatstypen werden nicht unterstützt und schlagen die Validierungssequenz fehl. In der Regel lautet die Fehlermeldung "Antwort mit SSL-Handshake-Fehler in 10.000 ms".

        Sie können den Messwert monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires verwenden, um eine Benachrichtigung zu erstellen, die Sie benachrichtigt, bevor Ihr Zertifikat abläuft. Weitere Informationen finden Sie unter Beispielrichtlinien: Richtlinie zur Verfügbarkeitsdiagnose.

        Klicken Sie das Kästchen SSL-Zertifikate prüfen an.

    7. Klicken Sie auf Next (Weiter).

  8. Konfigurieren Sie die Antwortanforderungen:

    • Optional: Verwenden Sie das Feld Antwortzeitlimit, um das Zeitlimit für die Verfügbarkeitsdiagnose zu ändern. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn innerhalb dieses Zeitraums keine Antwort von mehr als einem Standort empfangen wird.

    • Optional: Wenn Sie die Verfügbarkeitsdiagnose für den Inhaltsabgleich konfigurieren möchten, muss das Ein-/Aus-Label Inhaltsabgleich ist aktiviert ausgewählt sein:

      • Wählen Sie im Optionsmenü den Übereinstimmungstyp der Antwortinhalte aus. Dieses Feld bestimmt, wie der Antwortinhalt mit den zurückgegebenen Daten verglichen wird. Wenn der Antwortinhalt beispielsweise abcd und der Inhaltstyp Enthält ist, ist die Verfügbarkeitsdiagnose erfolgreich, wenn die Antwortdaten abcd enthalten. Die Verfügbarkeitsdiagnose schlägt fehl, wenn in der Antwort abcd nicht enthalten ist. Weitere Informationen finden Sie unter Antwortdaten validieren.
      • Geben Sie den Antwortinhalt ein. Der Antwortinhalt darf nicht länger als 1.024 Byte sein. In der API ist dieses Feld das ContentMatcher-Objekt.
    • Optional: Wenn Sie verhindern möchten, dass Logeinträge aufgrund von Verfügbarkeitsdiagnosen erstellt werden, löschen Sie die Option Fehler bei Logprüfungen.

    • Konfigurieren Sie für die HTTP-Verfügbarkeitsdiagnosen die zulässigen Antwortcodes. Standardmäßig wird jede 2xx-Antwort bei HTTP-Verfügbarkeitsdiagnosen als erfolgreiche Antwort markiert.

    • Klicken Sie auf Weiter.

  9. Benachrichtigungsrichtlinie erstellen Wenn die Verfügbarkeitsdiagnose durch eine Benachrichtigungsrichtlinie überwacht wird und die Verfügbarkeit fehlschlägt, wird ein Vorfall erstellt und eine Benachrichtigung an alle Benachrichtigungskanäle gesendet, die der Richtlinie zugeordnet sind. Wenn Sie der Richtlinie beispielsweise eine E-Mail-Adresse hinzufügen, wird an diese Adresse eine E-Mail gesendet. Sie können in diesem Schritt die Benachrichtigungsrichtlinie oder nach dem Erstellen der Diagnose eine Benachrichtigungsrichtlinie erstellen.

    Wir empfehlen, eine Benachrichtigungsrichtlinie für die Verfügbarkeitsdiagnose zu erstellen. Wenn Sie diesen Schritt überspringen möchten, muss der Text der Ein-/Aus-Schaltfläche Keine Benachrichtigung erstellen lauten. Klicken Sie auf die Schaltfläche, um den Umschaltstatus zu ändern.

    So erstellen Sie eine Benachrichtigungsrichtlinie im Rahmen dieses Ablaufs:

    1. Der Schalter zum Umschalten lautet Alert erstellen. Klicken Sie gegebenenfalls auf die Schaltfläche.

    2. Geben Sie im Namensfeld einen Namen für die Benachrichtigungsrichtlinie ein oder verwenden Sie den Standardnamen.

    3. Klicken Sie im Feld Benachrichtigungskanäle auf Menü , um der Benachrichtigungsrichtlinie einen oder mehrere Benachrichtigungskanäle hinzuzufügen. Wählen Sie die hinzuzufügenden Channels aus und klicken Sie auf OK. Die Benachrichtigungskanäle sind für jeden Kanaltyp alphabetisch gruppiert.

      Wenn ein Benachrichtigungskanal, den Sie der Benachrichtigungsrichtlinie hinzufügen möchten, nicht aufgeführt ist, klicken Sie auf Benachrichtigungskanäle verwalten.

      Benachrichtigungsdialogfeld mit den Schaltflächen zum Aktualisieren und Verwalten von Kanälen.

      Sie werden in einem neuen Browsertab zum Fenster Benachrichtigungskanäle weitergeleitet. Fügen Sie die Benachrichtigungskanäle hinzu, kehren Sie dann zu diesem Tab zurück, klicken Sie auf Aktualisieren und wählen Sie die Benachrichtigungskanäle aus, die der Benachrichtigungsrichtlinie hinzugefügt werden sollen. Weitere Informationen finden Sie unter Benachrichtigungskanäle.

    4. Optional: Wählen Sie im Feld für die Dauer aus, wie lange die Verfügbarkeitsdiagnosen fehlschlagen müssen, bevor ein Vorfall erstellt wird. Standardmäßig ist die Benachrichtigungsrichtlinie so konfiguriert, dass ein Vorfall erstellt wird, wenn mindestens zwei Regionen 1 Minute lang fehlgeschlagene Verfügbarkeitsdiagnosen melden.

    Informationen zum Deaktivieren, Bearbeiten und Löschen von Benachrichtigungsrichtlinien finden Sie unter [Richtlinien verwalten][Verwalten].

  10. Klicken Sie auf Test (Testen), um die Konfiguration der Verfügbarkeitsdiagnose zu prüfen. Wenn das Ergebnis nicht Ihren Erwartungen entspricht, lesen Sie den Abschnitt Diagnosefehler, korrigieren Sie Ihre Konfiguration und wiederholen Sie dann den Bestätigungsschritt.

  11. Klicken Sie auf Erstellen. Wenn Sie eine Verfügbarkeitsdiagnose speichern und ein Pflichtfeld nicht ausgefüllt wird, wird eine Fehlermeldung angezeigt. Nachdem Sie die Änderungen gespeichert haben, wird das Dialogfeld Verfügbarkeitsdiagnose erstellt angezeigt.

Vorschau

So erstellen Sie eine Verfügbarkeitsdiagnose mit der Google Cloud Console:

  1. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:
    Zu Monitoring
  2. Wählen Sie im Navigationsbereich Verfügbarkeitsdiagnosen aus.
  3. Aktivieren Sie in der Symbolleiste die Ein-/Aus-Schaltfläche mit dem Label Vorschauablauf.
  4. Klicken Sie auf Verfügbarkeitsdiagnose erstellen.

    Dialogfeld zum Erstellen einer Verfügbarkeitsdiagnose

  5. Geben Sie das Ziel der Verfügbarkeitsdiagnose an:

    1. Wählen Sie das Protokoll aus. Sie können HTTP, HTTPS oder TCP auswählen.

    2. Wählen Sie einen der folgenden Ressourcentypen aus:

      • URL: Eine IPv4-Adresse oder ein Hostname. Pfad und Port werden separat eingegeben.
      • Kubernetes LoadBalancer Service: Kubernetes-Service vom Typ LoadBalancer.
      • Instanz: Compute Engine- oder AWS EC2-Instanzen.
      • App Engine: Google App Engine-Anwendungen (Module)
      • Elastic Load Balancer: AWS-Lastenausgleichsmodul
    3. Füllen Sie die protokollspezifischen Felder aus:

      • Geben Sie für TCP-Prüfungen den Port ein.

      • Für HTTP- und HTTPS-Diagnosen können Sie einen Pfad im Host oder in der Ressource eingeben. Alle Verfügbarkeitsdiagnosen, die diese Protokolle verwenden, senden eine Anfrage an http://target/path. In diesem Ausdruck ist target für eine URL-Ressource ein Hostname oder eine IP-Adresse. Bei einer App Engine-Ressource ist target ein Hostname, der vom Dienstnamen abgeleitet wird. Für Instanz- und Load-Balancer-Ressourcen ist target eine IP-Adresse, die von dem Namen abgeleitet wird, den Sie für die Ressource oder die Gruppe von Ressourcen angegeben haben.

        Wenn Sie das Feld path leer lassen oder den Wert auf / setzen, wird die Anfrage an http://target/ gesendet.

        Wenn Sie beispielsweise eine Verfügbarkeitsdiagnose für die URL-Ressource example.com/tester ausführen möchten, setzen Sie das Feld Hostname auf example.com und das Feld Path auf /tester.

        Angenommen, Sie haben einen Server in App Engine mit einem Disponenten bereitgestellt, der / und /hello unterstützt. Lassen Sie das Feld Pfad leer, um die Verfügbarkeitsdiagnose für den Handler '/' durchzuführen. Setzen Sie den Wert des Felds Pfad auf /hello, um die Verfügbarkeitsdiagnose für den /hello-Handler auszuführen.

    4. Geben Sie die ressourcenspezifischen Felder ein:

      • Geben Sie für URL-Ressourcen den Hostnamen in das Feld Hostname ein. Geben Sie beispielsweise example.com ein.

      • Geben Sie für App Engine-Ressourcen den Dienstnamen in das Feld Dienst ein.

      • Füllen Sie für Elastischer Load-Balancer und Instanzressourcen das Feld Gilt für so aus:

        • Wenn Sie eine Verfügbarkeitsdiagnose für eine einzelne Instanz oder einen einzelnen Load-Balancer ausführen möchten, wählen Sie Einzeln aus. Wählen Sie dann über das Menü die entsprechende Instanz oder den Load-Balancer aus.
        • Wählen Sie zum Ausführen einer Verfügbarkeitsdiagnose für eine Monitoring-Gruppe die Option Gruppe und dann über das Menü den Gruppennamen aus.
    5. Optional: Mit dem Feld Prüfhäufigkeit können Sie festlegen, wie oft die Verfügbarkeitsdiagnose ausgeführt wird.

    6. Optional: Wenn Sie Prüflistenregionen auswählen oder SSL-Zertifikate, Authentifizierungen, Header und Ports für HTTP- und HTTPS-Diagnosen konfigurieren möchten, klicken Sie auf Weitere Zieloptionen:

      • Regionen: Wählen Sie die Regionen aus, in denen die Verfügbarkeitsdiagnosen Anfragen erhalten sollen. Eine Verfügbarkeitsdiagnose muss mindestens drei Diagnosen haben. In allen Regionen gibt es eine Diagnose, mit Ausnahme von USA mit drei Diagnosen. Die Standardeinstellung Global enthält alle Regionen.
      • ICMP-Pings: Konfigurieren Sie die Verfügbarkeitsdiagnose für bis zu drei Pings. Weitere Informationen finden Sie unter ICMP-Pings verwenden.
      • Anfragemethode: Wählen Sie für HTTP-Diagnosen die Anfragemethode aus.
      • Body: Geben Sie für HTTP POST-Prüfungen den URL-codierten Text ein. Sie müssen die Codierung selbst vornehmen. Lassen Sie dieses Feld für alle anderen Prüfungen leer.
      • Hostheader: Füllen Sie dieses Feld aus, um virtuelle Hosts zu prüfen. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.
      • Port: Geben Sie eine Portnummer an.
      • Benutzerdefinierte Header: Geben Sie benutzerdefinierte Header an und verschlüsseln Sie sie bei Bedarf. Bei der Verschlüsselung werden die Werte des Headers im Formular ausgeblendet. Verwenden Sie die Verschlüsselung für Header im Zusammenhang mit der Authentifizierung, die für andere nicht sichtbar sein sollen.

      • Authentication (Authentifizierung): Geben Sie einen Nutzernamen und ein Passwort an. Diese Werte werden als Autorisierungsheader gesendet. Wenn Sie hier Werte festlegen, geben Sie keinen Autorisierungsheader an. Wenn Sie hingegen einen Autorisierungsheader angeben, legen Sie hier keine Werte fest. Passwörter werden im Formular immer ausgeblendet. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

      • SSL-Zertifikatsprüfung: Wenn Sie HTTPS für eine URL-Ressource ausgewählt haben, versucht der Dienst standardmäßig, eine Verbindung über HTTPS herzustellen, und validiert das SSL-Zertifikat. Verfügbarkeitsdiagnosen schlagen fehl, wenn eine URL ein ungültiges Zertifikat hat. Mögliche Gründe für ein ungültiges Zertifikat sind ein abgelaufenes Zertifikat, ein selbst signiertes Zertifikat, ein Zertifikat mit einem nicht übereinstimmenden Domainnamen und ein Zertifikat, das die AIA-Erweiterung (Authority Information Access) verwendet.

        Wählen Sie SSL-Zertifikate validieren aus, um eine HTTPS-Verfügbarkeitsdiagnose zur Validierung des SSL-Zertifikats zu erzwingen.

        Deaktivieren Sie SSL-Zertifikate validieren, um die SSL-Zertifikatsvalidierung zu deaktivieren.

        Wenn Sie SSL-Zertifikate mit AIA-Erweiterungen haben, müssen Sie die Validierung von SSL-Zertifikaten deaktivieren. Diese Zertifikatstypen werden nicht unterstützt und schlagen die Validierungssequenz fehl. In der Regel lautet die Fehlermeldung "Antwort mit SSL-Handshake-Fehler in 10.000 ms".

        Sie können den Messwert monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires verwenden, um eine Benachrichtigung zu erstellen, die Sie benachrichtigt, bevor Ihr Zertifikat abläuft. Weitere Informationen finden Sie unter Beispielrichtlinien: Richtlinie zur Verfügbarkeitsdiagnose.

        Klicken Sie das Kästchen SSL-Zertifikate prüfen an.

  6. Klicken Sie auf Weiter und konfigurieren Sie die Antwortanforderungen. Alle Einstellungen in diesem Abschnitt haben Standardwerte:

    • Im Feld Antwortzeitlimit können Sie das Zeitlimit für die Verfügbarkeitsdiagnose ändern. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn innerhalb dieses Zeitraums keine Antwort von mehr als einem Standort empfangen wird.

    • Wenn Sie die Verfügbarkeitsdiagnose für den Inhaltsabgleich konfigurieren möchten, muss das Umschaltlabel Content Match ist aktiviert lauten:

      • Wählen Sie im Optionsmenü den Übereinstimmungstyp der Antwortinhalte aus. Dieses Feld bestimmt, wie der Antwortinhalt mit den zurückgegebenen Daten verglichen wird. Angenommen, der Antwortinhalt ist abcd und der Übereinstimmungstyp des Inhalts ist Enthält. Die Verfügbarkeitsdiagnose ist nur erfolgreich, wenn die Antwortdaten abcd enthalten. Weitere Informationen finden Sie unter Antwortdaten validieren.
      • Geben Sie den Antwortinhalt ein. Der Antwortinhalt darf nicht länger als 1.024 Byte sein. In der API ist dieses Feld das ContentMatcher-Objekt.
    • Wenn Sie verhindern möchten, dass Logeinträge aufgrund von Verfügbarkeitsdiagnosen erstellt werden, löschen Sie die Option Fehler bei Logprüfungen.

    • Konfigurieren Sie für die HTTP-Verfügbarkeitsdiagnosen die zulässigen Antwortcodes. Standardmäßig wird jede 2xx-Antwort bei HTTP-Verfügbarkeitsdiagnosen als erfolgreiche Antwort markiert.

  7. Klicken Sie auf Weiter und konfigurieren Sie die Warnungen und Benachrichtigungen.

    Erstellen Sie eine Benachrichtigungsrichtlinie und konfigurieren Sie Benachrichtigungskanäle für diese Richtlinie, um bei einer Verfügbarkeitsdiagnose benachrichtigt zu werden:

    1. Optional: Aktualisieren Sie den Namen der Benachrichtigungsrichtlinie.
    2. Optional: Wählen Sie im Feld Dauer aus, wie lange die Verfügbarkeitsdiagnosen fehlschlagen müssen, bevor Benachrichtigungen gesendet werden. Standardmäßig werden Benachrichtigungen gesendet, wenn mindestens zwei Regionen für mindestens eine Minute Fehler bei der Verfügbarkeitsdiagnose melden.
    3. Klicken Sie im Feld Benachrichtigungskanäle auf Menü, wählen Sie die hinzuzufügenden Kanäle aus und klicken Sie auf OK.

      Im Menü sind die Benachrichtigungskanäle für jeden Kanaltyp alphabetisch gruppiert.

    Wenn Sie keine Benachrichtigungsrichtlinie erstellen möchten, muss der Text der Ein-/Aus-Schaltfläche Keine Benachrichtigung erstellen lauten.

  8. Klicken Sie auf Weiter und schließen Sie die Verfügbarkeitsdiagnose ab:

    1. Geben Sie einen aussagekräftigen Titel für die Verfügbarkeitsdiagnose ein.

    2. Optional: So fügen Sie der Verfügbarkeitsdiagnose benutzerdefinierte Labels hinzu:

      1. Klicken Sie auf Nutzerlabels anzeigen.
      2. Geben Sie im Feld Schlüssel einen Namen für das Label ein. Labelnamen müssen mit einem Kleinbuchstaben beginnen und können Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Geben Sie beispielsweise severity ein.
      3. Geben Sie in das Feld Wert einen Wert für das Label ein. Labelwerte können Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Geben Sie beispielsweise critical ein.
      4. Klicken Sie für jedes zusätzliche Label auf Nutzerlabel hinzufügen und geben Sie dann den Schlüssel und den Wert des Labels ein.
    3. Klicken Sie auf Test (Testen), um die Konfiguration der Verfügbarkeitsdiagnose zu prüfen. Wenn das Ergebnis nicht Ihren Erwartungen entspricht, lesen Sie den Abschnitt Diagnosefehler, korrigieren Sie Ihre Konfiguration und wiederholen Sie dann den Bestätigungsschritt.

    4. Klicken Sie auf Erstellen. Wenn Sie Erstellen auswählen und ein Pflichtfeld nicht ausgefüllt ist, wird eine Fehlermeldung angezeigt.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.create auf. Legen Sie die Parameter der Methode so fest:

  • parent: Erforderlich. Dies muss der Name des Projekts sein, in dem die Verfügbarkeitsdiagnose erstellt werden soll. Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID. Das Format dafür ist:

    projects/PROJECT_ID
    
  • Der Anfragetext muss ein UptimeCheckConfig-Objekt für die neue Verfügbarkeitsdiagnose enthalten. Auf dieser Seite finden Sie Informationen zu einigen Feldern. Eine vollständige Dokumentation zu diesem Objekt und seinen Feldern finden Sie unter UptimeCheckConfig:

    • Lassen Sie das Feld name des Konfigurationsobjekts leer. Das System legt dieses Feld fest, wenn es das Antwortkonfigurationsobjekt erstellt.

    • Wenn Sie eine HTTP- oder HTTPS-Prüfung konfigurieren, müssen Sie das Feld HttpCheck des Objekts UptimeCheckConfig ausfüllen. Legen Sie in diesem Objekt das Feld requestMethod auf GET oder POST fest. Wenn dieses Feld ausgelassen oder auf METHOD_UNSPECIFIED gesetzt wird, wird eine GET-Anfrage ausgegeben.

      Wenn Sie eine POST-Anfrage konfigurieren, füllen Sie die Felder contentType und body aus.

Die Methode create gibt das Objekt UptimeCheckConfig für die neue Konfiguration zurück.

Wenn die erstellte Verfügbarkeitsdiagnose nicht wie erwartet funktioniert, lesen Sie den Abschnitt Diagnosefehler auf dieser Seite.

C#

public static object CreateUptimeCheck(string projectId, string hostName,
    string displayName)
{
    // Define a new config.
    var config = new UptimeCheckConfig()
    {
        DisplayName = displayName,
        MonitoredResource = new MonitoredResource()
        {
            Type = "uptime_url",
            Labels = { { "host", hostName } }
        },
        HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
        {
            Path = "/",
            Port = 80,
        },
        Timeout = TimeSpan.FromSeconds(10).ToDuration(),
        Period = TimeSpan.FromMinutes(5).ToDuration()
    };
    // Create a client.
    var client = UptimeCheckServiceClient.Create();
    ProjectName projectName = new ProjectName(projectId);
    // Create the config.
    var newConfig = client.CreateUptimeCheckConfig(
        projectName,
        config,
        CallSettings.FromExpiration(
            Expiration.FromTimeout(
                TimeSpan.FromMinutes(2))));
    Console.WriteLine(newConfig.Name);
    return 0;
}

Java

private static void createUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  CreateUptimeCheckConfigRequest request =
      CreateUptimeCheckConfigRequest.newBuilder()
          .setParent(ProjectName.format(projectId))
          .setUptimeCheckConfig(
              UptimeCheckConfig.newBuilder()
                  .setDisplayName(displayName)
                  .setMonitoredResource(
                      MonitoredResource.newBuilder()
                          .setType("uptime_url")
                          .putLabels("host", hostName))
                  .setHttpCheck(HttpCheck.newBuilder().setPath(pathName).setPort(80))
                  .setTimeout(Duration.newBuilder().setSeconds(10))
                  .setPeriod(Duration.newBuilder().setSeconds(300)))
          .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.createUptimeCheckConfig(request);
    System.out.println("Uptime check created: " + config.getName());
  } catch (Exception e) {
    usage("Exception creating uptime check: " + e.toString());
    throw e;
  }
}

Go


// createGet creates an example uptime check on a GET request.
func createGet(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new GET uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_GET,
					Path:          "/",
					Port:          80,
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig GET: %v", err)
	}
	fmt.Fprintf(w, "Successfully created GET uptime check %q\n", config.GetDisplayName())
	return config, nil
}

// createPost creates an example uptime check on a POST request.
func createPost(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new POST uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_POST,
					ContentType:   monitoringpb.UptimeCheckConfig_HttpCheck_URL_ENCODED,
					Path:          "/",
					Port:          80,
					Body:          []byte(base64.URLEncoding.EncodeToString([]byte("key: value"))),
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig POST: %v", err)
	}
	fmt.Fprintf(w, "Successfully created POST uptime check %q\n", config.GetDisplayName())
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const hostname = 'mydomain.com';

const request = {
  // i.e. parent: 'projects/my-project-id'
  parent: client.projectPath(projectId),
  uptimeCheckConfig: {
    displayName: 'My Uptime Check',
    monitoredResource: {
      // See the Uptime Check docs for supported MonitoredResource types
      type: 'uptime_url',
      labels: {
        host: hostname,
      },
    },
    httpCheck: {
      path: '/',
      port: 80,
    },
    timeout: {
      seconds: 10,
    },
    period: {
      seconds: 300,
    },
  },
};

// Creates an uptime check config for a GCE instance
const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
console.log('Uptime check created:');
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log('Resource: %j', uptimeCheckConfig.monitoredResource);
console.log('Period: %j', uptimeCheckConfig.period);
console.log('Timeout: %j', uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  'Check: %j',
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
use Google\Api\MonitoredResource;

/**
 * Example:
 * ```
 * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $hostName
 * @param string $displayName
 */
function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $monitoredResource = new MonitoredResource();
    $monitoredResource->setType('uptime_url');
    $monitoredResource->setLabels(['host' => $hostName]);

    $uptimeCheckConfig = new UptimeCheckConfig();
    $uptimeCheckConfig->setDisplayName($displayName);
    $uptimeCheckConfig->setMonitoredResource($monitoredResource);

    $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig(
        $uptimeCheckClient->projectName($projectId),
        $uptimeCheckConfig
    );

    printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
}

Python

def create_uptime_check_config_get(project_name, host_name=None, display_name=None):
    config = monitoring_v3.UptimeCheckConfig()
    config.display_name = display_name or "New GET uptime check"
    config.monitored_resource = {
        "type": "uptime_url",
        "labels": {"host": host_name or "example.com"}
    }
    config.http_check = {
        "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.GET,
        "path": "/",
        "port": 80
    }
    config.timeout = {"seconds": 10}
    config.period = {"seconds": 300}

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(request={"parent": project_name, "uptime_check_config": config})
    pprint.pprint(new_config)
    return new_config

def create_uptime_check_config_post(project_name, host_name=None, display_name=None):
    config = monitoring_v3.UptimeCheckConfig()
    config.display_name = display_name or "New POST uptime check"
    config.monitored_resource = {
        "type": "uptime_url",
        "labels": {"host": host_name or "example.com"}
    }
    config.http_check = {
        "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.POST,
        "content_type": monitoring_v3.UptimeCheckConfig.HttpCheck.ContentType.URL_ENCODED,
        "body": "foo=bar".encode("utf-8"),
        "path": "/",
        "port": 80
    }
    config.timeout = {"seconds": 10}
    config.period = {"seconds": 300}

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(request={"parent": project_name, "uptime_check_config": config})
    pprint.pprint(new_config)
    return new_config

Ruby

def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
  require "google/cloud/monitoring"

  client = Google::Cloud::Monitoring.uptime_check_service
  project_name = client.project_path project: project_id
  config = {
    display_name:       display_name.nil? ? "New uptime check" : display_name,
    monitored_resource: {
      type:   "uptime_url",
      labels: { "host" => host_name.nil? ? "example.com" : host_name }
    },
    http_check:         { path: "/", port: 80 },
    timeout:            { seconds: 10 },
    period:             { seconds: 300 }
  }
  new_config = client.create_uptime_check_config \
    parent:              project_name,
    uptime_check_config: config
  puts new_config.name
  new_config
end

Es kann bis zu 5 Minuten dauern, bis die Ergebnisse der Verfügbarkeitsdiagnose bei Monitoring eintreffen. Bis dahin meldet das Verfügbarkeitsdiagnose-Dashboard als Status "no data available" (Keine Daten verfügbar).

ICMP-Pings verwenden

Zur Fehlerbehebung bei fehlgeschlagenen öffentlichen Verfügbarkeitsdiagnosen können Sie Ihre Verfügbarkeitsdiagnosen so konfigurieren, dass während der Diagnose bis zu drei ICMP-Pings gesendet werden. Mithilfe der Pings können Sie zwischen Fehlern unterscheiden, die beispielsweise durch Probleme mit der Netzwerkverbindung oder durch Zeitüberschreitungen in Ihrer Anwendung verursacht wurden.

Standardmäßig senden Verfügbarkeitsdiagnosen keine Pings. Jeder Ping führt zu einer gewissen Latenz bei der Verfügbarkeitsdiagnose. Private Verfügbarkeitsdiagnosen können keine Pings senden.

Wenn eine öffentliche Verfügbarkeitsdiagnose fehlschlägt, werden die Ergebnisse der Pings in Cloud Logging-Logs geschrieben. Wenn der Ping fehlschlägt, werden dem Feld httpRequest im Logeintrag die folgenden Felder hinzugefügt:

  • rtt_usec: Umlaufzeit für jede fehlgeschlagene Ping-Anfrage.
  • unreachable_count: Anzahl der Ping-Anfragen, für die der Statuscode ICMP_DEST_UNREACH zurückgegeben wurde.
  • no_answer_count: Anzahl der Ping-Anfragen, bei denen eine Zeitüberschreitung aufgetreten ist und keine Antwort zurückgegeben wurde.

Die Ergebnisse von Pings für erfolgreiche Verfügbarkeitsdiagnosen werden nicht protokolliert.

Pings konfigurieren

Wenn Sie Ihre öffentlichen Verfügbarkeitsdiagnosen so einrichten möchten, dass sie Pings enthalten, müssen Sie mit der Cloud Monitoring API Verfügbarkeitsdiagnosen-Konfigurationen erstellen oder vorhandene ändern. Sie können Pings nicht über die Google Cloud Console konfigurieren.

Jede Verfügbarkeitsdiagnosenkonfiguration enthält entweder ein HttpCheck- oder ein TcpCheck-Objekt. Beide Objekte enthalten das Feld pingConfig. Geben Sie in diesem Feld die Anzahl der ICMP-Pings an, die für jede Prüfung verwendet werden sollen (bis zu drei). Standardmäßig werden keine Pings gesendet.

Verwenden Sie das Objekt PingConfig mit der folgenden Struktur, um den Wert des Felds pingConfig festzulegen:

{
  "pingsCount": integer
}

Weitere Informationen zur Verwendung der Monitoring API für Verfügbarkeitsdiagnosen-Konfigurationen finden Sie unter Verfügbarkeitsdiagnose: API erstellen oder Verfügbarkeitsdiagnose bearbeiten: API.

Verfügbarkeitsdiagnose prüfen

Wenn Sie eine Verfügbarkeitsdiagnose in der Google Cloud Console erstellen, können Sie die Konfiguration vor dem Speichern testen.

Erfolgreiche Prüfungen

Eine Verfügbarkeitsdiagnose ist erfolgreich, wenn die folgenden Bedingungen erfüllt sind:

  • Der HTTP-Status entspricht den ausgewählten Kriterien.
  • Es gibt für die Antwort keinen erforderlichen Inhalt bzw. der erforderliche Inhalt ist in der Antwort auffindbar.

Nicht bestandene Prüfungen

Im Folgenden sind einige mögliche Fehlerursachen bei Verfügbarkeitsdiagnosen aufgeführt:

  • Connection Error – Refused (Verbindungsfehler – Abgelehnt): Achten Sie bei Verwendung des Standardverbindungstyps HTTP darauf, dass ein Webserver installiert ist, der auf HTTP-Anfragen reagiert. Ein Verbindungsfehler kann auf einer neuen Instanz auftreten, wenn Sie keinen Webserver installiert haben. Weitere Informationen finden Sie unter Kurzanleitung für Compute Engine. Bei Verwendung des Verbindungstyps HTTPS müssen Sie unter Umständen zusätzliche Konfigurationsschritte ausführen. Informationen zu Firewallproblemen finden Sie unter IP-Adressen von Verfügbarkeitsdiagnosen auflisten.
  • Name or service not found (Name oder Dienst nicht gefunden): Der Hostname ist möglicherweise falsch.
  • 403 Forbidden (403 – Verboten): Der Dienst liefert während der Verfügbarkeitsdiagnose einen Fehlercode. Die Standardkonfiguration für den Apache-Webserver gibt diesen Code beispielsweise unter Amazon Linux zurück. Unter bestimmten Linux-Versionen erhalten Sie hingegen den Code 200 (Success) (200 (Erfolg)). Weitere Informationen finden Sie in der LAMP-Anleitung für Amazon Linux oder in der Dokumentation Ihres Webservers.
  • 404 – Not found (Nicht gefunden): Möglicherweise ist der Pfad falsch.
  • 408 Request timeout (408 – Zeitüberschreitung bei Anfrage) oder keine Antwort: Möglicherweise ist die Portnummer falsch, der Dienst wird nicht ausgeführt oder ist nicht erreichbar oder das Zeitlimit ist zu niedrig. Prüfen Sie, ob Ihre Firewall Traffic von den Verfügbarkeitsservern zulässt. Weitere Informationen finden Sie unter IP-Adressen von Verfügbarkeitsdiagnosen auflisten. Das Zeitlimit ist Teil der Antwortvalidierung angegeben.

Wenn die Verfügbarkeitsdiagnose zum Senden von Pings konfiguriert ist, werden die Ergebnisse von Pings für fehlgeschlagene Verfügbarkeitsdiagnosen in Cloud Logging geschrieben. Weitere Informationen finden Sie unter ICMP-Pings verwenden.

Nächste Schritte