Fehlerbehebung bei fehlenden Benachrichtigungen

Auf dieser Seite wird erläutert, warum Sie möglicherweise nicht wie erwartet Benachrichtigungen erhalten. Außerdem werden mögliche Lösungen für diese Situationen aufgezeigt.

Benachrichtigungen werden nicht empfangen

Sie konfigurieren Benachrichtigungskanäle und erwarten, dass Sie bei Vorfällen benachrichtigt werden. Sie erhalten keine Benachrichtigungen.

So rufen Sie Informationen zur Ursache des Fehlers ab:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Wählen Sie das entsprechende Google Cloud-Projekt aus.
  3. Protokolle auf Benachrichtigungskanalereignisse abfragen:

    1. Maximieren Sie das Menü Protokollname und wählen Sie notification_channel_events aus.
    2. Maximieren Sie das Menü Schweregrad und wählen Sie Fehler aus.
    3. Optional: Verwenden Sie die Zeitraumauswahl, um einen benutzerdefinierten Zeitraum auszuwählen.
    4. Klicken Sie auf Abfrage ausführen.

    Mit den vorherigen Schritten wird die folgende Abfrage erstellt:

    resource.type:"stackdriver_notification_channel"
    logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events"
    severity=ERROR
    

    Die Zusammenfassungszeile und das Feld jsonPayload enthalten in der Regel Informationen zu Fehlern. Wenn beispielsweise ein Gateway-Fehler auftritt, enthält die Zusammenfassungszeile „failed with 502 Bad Gateway“.

Webhook-Benachrichtigungen werden nicht empfangen

Sie konfigurieren einen Webhook-Benachrichtigungskanal und erwarten, dass Sie benachrichtigt werden, wenn Vorfälle auftreten. Sie erhalten keine Benachrichtigungen.

Privater Endpunkt

Webhooks können nur für Benachrichtigungen verwendet werden, wenn der Endpunkt öffentlich ist.

Verwenden Sie Pub/Sub-Benachrichtigungen in Kombination mit einem Pull-Abo für dieses Benachrichtigungsthema, um dieses Problem zu beheben.

Wenn Sie einen Pub/Sub-Benachrichtigungskanal konfigurieren, werden Benachrichtigungen zu Vorfällen an eine Pub/Sub-Warteschlange mit Identity and Access Management-Steuerungen gesendet. Diese Benachrichtigungen können von allen Diensten verwendet werden, die ein Pub/Sub-Thema abfragen oder beobachten können. Diese Benachrichtigungen können beispielsweise von Anwendungen auf virtuellen Maschinen der App Engine, Cloud Run oder Compute Engine verwendet werden.

Wenn Sie ein Pull-Abo verwenden, wird eine Anfrage an Google gesendet, die auf den Empfang einer Nachricht wartet. Für diese Abos ist Zugriff auf Google erforderlich, aber keine Regeln für Firewalls oder den eingehenden Zugriff.

Öffentlicher Endpunkt

Sehen Sie in den Cloud Logging-Logeinträgen nach, warum die Zustellung fehlgeschlagen ist.

Sie können beispielsweise mit dem Log-Explorer nach Logeinträgen für die Benachrichtigungskanalressource suchen. Dazu nutzen Sie einen Filter wie den folgenden:

resource.type="stackdriver_notification_channel"

Pub/Sub-Benachrichtigungen werden nicht empfangen

Sie konfigurieren einen Pub/Sub-Benachrichtigungskanal, erhalten aber keine Benachrichtigungen.

Versuchen Sie Folgendes, um diese Problem zu beheben:

  • Prüfen Sie, ob das Dienstkonto für Benachrichtigungen vorhanden ist. Benachrichtigungen werden nicht gesendet, wenn das Dienstkonto gelöscht wurde.

    So prüfen Sie, ob das Dienstkonto vorhanden ist:

    1. Öffnen Sie in der Google Cloud Console die Seite IAM:

      Rufen Sie IAM auf.

      Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM & Admin ist.

    2. Suchen Sie nach einem Dienstkonto mit der folgenden Namenskonvention:

      service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

      Wenn dieses Dienstkonto nicht aufgeführt ist, wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.

    Wenn das Benachrichtigungs-Dienstkonto nicht vorhanden ist, müssen Sie mit dem Erstellen des Pub/Sub-Benachrichtigungskanals für Monitoring beginnen, damit das Dienstkonto erstellt wird:

    1. Rufen Sie in der Google Cloud Console die Seite  Benachrichtigungen auf:

      Zu Benachrichtigungen

      Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

    2. Klicken Sie auf Edit notification channels (Benachrichtigungskanäle bearbeiten).
    3. Klicken Sie im Abschnitt Cloud Pub/Sub auf Add new (Neu hinzufügen).

      Beim Überwachen wird das Benachrichtigungs-Dienstkonto erstellt, falls noch keines vorhanden ist. Im Dialogfeld Pub/Sub-Kanal erstellen wird der Name des Benachrichtigungsdienstkontos angezeigt.

    4. Wenn Sie keinen Benachrichtigungskanal hinzufügen möchten, klicken Sie auf Abbrechen. Andernfalls schließen Sie die Erstellung des Benachrichtigungskanals ab und klicken Sie auf Kanal hinzufügen.

    5. Gewähren Sie dem Dienstkonto die Berechtigung, Ihre Pub/Sub-Themen zu veröffentlichen:

      1. Öffnen Sie in einem neuen Browsertab das Dokument Benachrichtigungskanal erstellen.
      2. Wählen Sie den Tab Pub/Sub aus und folgen Sie der Anleitung im Abschnitt Dienstkonto autorisieren.
  • Das Benachrichtigungsdienstkonto muss zum Senden von Benachrichtigungen für die gewünschten Pub/Sub-Themen autorisiert sein.

    Sie können die Berechtigungen für ein Dienstkonto in der Google Cloud Console oder mit dem Google Cloud CLI-Befehl aufrufen:

    • Auf der Seite IAM in der Google Cloud Console sind die Rollen für jedes Dienstkonto aufgeführt.
    • Auf der Seite Pub/Sub-Themen in der Google Cloud Console sind alle Themen aufgeführt. Wenn Sie ein Thema auswählen, werden auf dem Tab Berechtigungen die Rollen aufgeführt, die Dienstkonten gewährt wurden.
    • Führen Sie den folgenden Google Cloud CLI-Befehl aus, um alle Dienstkonten und ihre Rollen aufzulisten:

      gcloud projects get-iam-policy PROJECT_ID
      

      Im Folgenden sehen Sie eine Teilantwort auf diesen Befehl:

          serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/monitoring.notificationServiceAgent
           - members:
             [...]
             role: roles/owner
           - members:
             - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/pubsub.publisher
      

      Die Befehlsantwort enthält nur Rollen, keine Berechtigungen pro Thema.

    • Führen Sie den folgenden Befehl aus, um die IAM-Bindungen für ein bestimmtes Thema aufzulisten:

      gcloud pubsub topics get-iam-policy TOPIC
      

      Das folgende Beispiel zeigt eine Beispielantwort für diesen Befehl:

          bindings:
          - members:
            - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
            role: roles/pubsub.publisher
          etag: BwXPRb5WDPI=
          version: 1
      

    Informationen zum Autorisieren des Dienstkontos für Benachrichtigungen finden Sie unter Dienstkonto autorisieren.

Benachrichtigungen für Benachrichtigungsrichtlinien für Verfügbarkeitsdiagnosen werden nicht empfangen

Sie möchten benachrichtigt werden, wenn eine virtuelle Maschine (VM) neu gestartet oder heruntergefahren wird. Dazu erstellen Sie eine Benachrichtigungsrichtlinie, mit der der Messwert compute.googleapis.com/instance/uptime überwacht wird. Sie erstellen und konfigurieren die Bedingung so, dass ein Vorfall generiert wird, wenn keine Messwertdaten vorhanden sind. Sie definieren die Bedingung nicht mit Monitoring Query Language (MQL)1. Sie werden nicht benachrichtigt, wenn die virtuelle Maschine (VM) neu gestartet oder heruntergefahren wird.

Mit dieser Benachrichtigungsrichtlinie werden nur Zeitreihen für Compute Engine-VM-Instanzen überwacht, die sich im Status RUNNING befinden. Zeitreihen für VMs, die sich in einem anderen Status befinden, z. B. STOPPED oder DELETED, werden herausgefiltert, bevor die Bedingung ausgewertet wird. Aus diesem Grund können Sie keine Benachrichtigungsrichtlinie mit einer Benachrichtigungsbedingung für fehlende Messwerte verwenden, um festzustellen, ob eine VM-Instanz ausgeführt wird. Informationen zu den Status von VM-Instanzen finden Sie unter Lebenszyklus von VM-Instanzen.

Um dieses Problem zu beheben, erstellen Sie eine Benachrichtigungsrichtlinie, um eine Verfügbarkeitsdiagnose zu überwachen. Verwenden Sie für private Endpunkte private Uptime-Prüfungen.

Eine mögliche Alternative zu Benachrichtigungen bei Verfügbarkeitsdiagnosen sind Benachrichtigungsrichtlinien, die das Fehlen von Daten überwachen. Wir empfehlen dringend, Benachrichtigungen bei Verfügbarkeitsdiagnosen statt bei fehlenden Daten zu aktivieren. Richtlinien für Benachrichtigungen bei fehlenden Messwerten können zu Fehlalarmen führen, wenn es vorübergehende Probleme mit der Verfügbarkeit von Monitoring-Daten gibt.

Wenn die Verwendung von Verfügbarkeitsdiagnosen jedoch nicht möglich ist, können Sie mit MQL eine Benachrichtigungsrichtlinie erstellen, die Sie benachrichtigt, wenn die VM heruntergefahren wurde. MQL-definierte Bedingungen filtern Zeitreihendaten nicht vorab nach dem Zustand der VM-Instanz. Da MQL Daten nicht nach VM-Zuständen filtert, können Sie damit feststellen, ob keine Daten von heruntergefahrenen VMs vorhanden sind.

Betrachten Sie folgende MQL-Bedingung, die den Messwert compute.googleapis.com/instance/cpu/utilization überwacht:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m

Wenn eine von dieser Bedingung überwachte VM heruntergefahren wird, wird drei Minuten später ein Vorfall generiert und es werden Benachrichtigungen gesendet. Der absent_for-Wert muss mindestens drei Minuten betragen.

Weitere Informationen zu MQL finden Sie unter Benachrichtigungsrichtlinien mit MQL.

1: MQL ist eine ausdrucksstarke textbasierte Sprache, die mit Cloud Monitoring API-Aufrufen und in der Google Cloud Console verwendet werden kann. Wenn Sie eine Bedingung mit MQL in der Google Cloud Console konfigurieren möchten, müssen Sie den Code-Editor verwenden.

Keine Benachrichtigungen für Richtlinien zu Benachrichtigungen bei einer bestimmten Anzahl von Anfragen erhalten

Sie möchten die Anzahl der abgeschlossenen Anfragen im Blick behalten. Sie haben eine Benachrichtigungsrichtlinie erstellt, die den Messwert serviceruntime.googleapis.com/api/request_count überwacht. Sie werden jedoch nicht benachrichtigt, wenn die Anzahl der Anfragen den von Ihnen konfigurierten Grenzwert überschreitet.

Der maximale Abgleichszeitraum für den Messwert „Anzahl der Anfragen“ beträgt 7 Stunden und 30 Minuten.

Prüfen Sie den Wert des Kalibrierungszeitraums in Ihrer Benachrichtigungsrichtlinie, um dieses Problem zu beheben. Wenn der Wert länger als der Höchstwert für diesen Messwert ist, verkürzen Sie den Zeitraum für die Ausrichtung auf maximal 7 Stunden und 30 Minuten.