Fehlerbehebung bei fehlenden Benachrichtigungen

Auf dieser Seite wird erläutert, warum Sie Benachrichtigungen möglicherweise nicht wie erwartet erhalten. Außerdem werden mögliche Abhilfemaßnahmen beschrieben.

Benachrichtigungen werden nicht empfangen

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

So erfassen Sie Informationen zur Ursache des Fehlers:

  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 Monitoring ist.

  2. Wählen Sie das entsprechende Google Cloud-Projekt aus.
  3. Fragen Sie die Logs nach Ereignissen in Benachrichtigungskanälen ab:

    1. Maximieren Sie das Menü Logname und wählen Sie notification_channel_events aus.
    2. Maximieren Sie das Menü Schweregrad und wählen Sie Fehler aus.
    3. Optional: Über die Zeitraumauswahl können Sie einen benutzerdefinierten Zeitraum festlegen.
    4. Klicken Sie auf Abfrage ausführen.

    In 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 Fehlerinformationen. Wenn beispielsweise ein Gateway-Fehler auftritt, enthält die Zusammenfassungszeile „Mit 502 Bad Gateway fehlgeschlagen“.

Keine Webhook-Benachrichtigungen empfangen

Sie konfigurieren einen Webhook-Benachrichtigungskanal und erwarten, bei Vorfällen benachrichtigt zu werden. Sie erhalten keine Benachrichtigungen.

Privater Endpunkt

Sie können Webhooks nur dann für Benachrichtigungen verwenden, wenn der Endpunkt öffentlich ist.

Verwenden Sie zum Beheben dieses Problems Pub/Sub-Benachrichtigungen in Kombination mit einem Pull-Abo für dieses Benachrichtigungsthema.

Wenn Sie einen Pub/Sub-Benachrichtigungskanal konfigurieren, werden Vorfallbenachrichtigungen an eine Pub/Sub-Warteschlange mit Identity and Access Management-Steuerelementen gesendet. Jeder Dienst, der ein Pub/Sub-Thema abfragen oder überwachen kann, kann diese Benachrichtigungen verarbeiten. Diese Benachrichtigungen können z. B. von Anwendungen genutzt werden, die auf virtuellen App Engine-, Cloud Run- oder Compute Engine-VMs ausgeführt werden.

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

Öffentlicher Endpunkt

Um zu ermitteln, warum die Zustellung fehlgeschlagen ist, prüfen Sie die Cloud Logging-Logeinträge auf Fehlerinformationen.

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. Wenn das Dienstkonto gelöscht wurde, werden keine Benachrichtigungen gesendet.

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

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

      Zu IAM

      Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis mit der Zwischenüberschrift IAM und Verwaltung aus.

    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 einbeziehen aus.

    Wenn das Dienstkonto für Benachrichtigungen nicht vorhanden ist, müssen Sie den Pub/Sub-Benachrichtigungskanal für Monitoring erstellen, um das Dienstkonto zu erstellen:

    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).

      Monitoring erstellt das Dienstkonto für Benachrichtigungen, falls noch keines vorhanden ist. Das Dialogfeld Pub/Sub-Kanal erstellen zeigt den Namen des Benachrichtigungsdienstkontos an.

    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 Berechtigungen zum Veröffentlichen Ihrer Pub/Sub-Themen:

      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 Dienstkonto für Benachrichtigungen muss berechtigt sein, Benachrichtigungen zu den gewünschten Pub/Sub-Themen zu senden.

    Zum Aufrufen der Berechtigungen für ein Dienstkonto können Sie die Google Cloud Console oder den Google Cloud CLI-Befehl verwenden:

    • Auf der Seite IAM in der Google Cloud Console werden die Rollen für jedes Dienstkonto aufgeführt.
    • Auf der Seite Pub/Sub-Themen in der Google Cloud Console werden alle Themen aufgeführt. Wenn Sie ein Thema auswählen, werden auf dem Tab Berechtigungen die Rollen aufgeführt, die Dienstkonten zugewiesen sind.
    • 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 finden 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 Autorisierung 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
      

      Hier sehen Sie 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. Daher erstellen Sie eine Benachrichtigungsrichtlinie, die den Messwert compute.googleapis.com/instance/uptime überwacht. 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.

Diese Benachrichtigungsrichtlinie überwacht nur Zeitachsen für Compute Engine-VM-Instanzen, die sich im Status RUNNING befinden. Zeitachsen für VMs mit einem anderen Status wie STOPPED oder DELETED werden herausgefiltert, bevor die Bedingung ausgewertet wird. Aufgrund dieses Verhaltens können Sie keine Benachrichtigungsrichtlinie mit einer Benachrichtigungsbedingung für fehlende Messwerte verwenden, um festzustellen, ob eine VM-Instanz ausgeführt wird. Informationen zum Status von VM-Instanzen finden Sie unter Lebenszyklus von VM-Instanzen.

Erstellen Sie zum Beheben dieses Problems eine Benachrichtigungsrichtlinie zum Überwachen einer Verfügbarkeitsdiagnose. Verwenden Sie für private Endpunkte private Verfügbarkeitsdiagnosen.

Eine mögliche Alternative zur Benachrichtigung bei Verfügbarkeitsdiagnosen ist die Verwendung von Benachrichtigungsrichtlinien, die das Fehlen von Daten überwachen. Wir empfehlen dringend, Benachrichtigungen zu Verfügbarkeitsdiagnosen anstelle von fehlenden Daten zu senden: Benachrichtigungsrichtlinien für fehlende Messwerte können falsch positive Ergebnisse generieren, wenn vorübergehende Probleme mit der Verfügbarkeit von Monitoring-Daten auftreten.

Wenn die Verwendung von Verfügbarkeitsdiagnosen jedoch nicht möglich ist, können Sie eine Benachrichtigungsrichtlinie mit MQL erstellen, die Sie darüber informiert, dass die VM heruntergefahren wurde. Über MQL definierte Bedingungen filtern Zeitachsendaten nicht vor dem Filtern nach dem Status der VM-Instanz. Da MQL Daten nicht nach VM-Status filtert, können Sie damit das Fehlen von Daten von VMs erkennen, die beendet wurden.

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 in der Google Cloud Console eine Bedingung mit MQL konfigurieren möchten, müssen Sie den Code-Editor verwenden.

Es werden keine Benachrichtigungen zu Benachrichtigungsrichtlinien für die Anzahl der Anfragen empfangen

Sie möchten die Anzahl der abgeschlossenen Anfragen überwachen. 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 Ausrichtungszeitraum für den Messwert zur Anzahl der Anfragen beträgt 7 Stunden und 30 Minuten.

Prüfen Sie den Wert des Ausrichtungszeitraums in Ihrer Benachrichtigungsrichtlinie, um dieses Problem zu beheben. Wenn der Wert länger als das Maximum für diesen Messwert ist, verkürzen Sie den Ausrichtungszeitraum, sodass er nicht mehr als 7 Stunden und 30 Minuten beträgt.