Fehlerbehebung bei Benachrichtigungsrichtlinien

Auf dieser Seite wird erläutert, warum sich einige Benachrichtigungsrichtlinien möglicherweise anders als beabsichtigt verhalten. Weiter werden mögliche Lösungen für diese Situationen aufgezeigt.

Informationen zu den Variablen, die sich beispielsweise durch die Auswahl des Wiederholungszeitraums auf eine Benachrichtigungsrichtlinie auswirken können, finden Sie unter Verhalten von messwertbasierten Benachrichtigungsrichtlinien.

Richtlinie zur Laufwerksauslastung bedingt unerwartete Vorfälle

Sie haben eine Benachrichtigungsrichtlinie erstellt, um die „genutzte“ Kapazität der Laufwerke in Ihrem System zu überwachen. Mit dieser Richtlinie wird der Messwert agent.googleapis.com/disk/percent_used überwacht. Sie möchten nur benachrichtigt werden, wenn die Auslastung eines physischen Laufwerks den in der Bedingung festgelegten Grenzwert überschreitet. Diese Richtlinie führt jedoch zu Vorfällen, wenn die Laufwerksauslastung jedes physischen Laufwerks unter dem Grenzwert liegt.

Eine bekannte Ursache für unerwartete Vorfälle bei solchen Richtlinien ist, dass die Bedingungen nicht auf das Monitoring physischer Laufwerke beschränkt sind. Stattdessen überwachen diese Richtlinien alle Laufwerke, einschließlich virtueller Laufwerke, darunter Loopback-Geräte. Wenn ein virtuelles Laufwerk so entworfen wurde, dass seine Auslastung bei 100 % liegt, würde dies die Richtlinie dazu motivieren, einen Vorfall auszulösen.

Betrachten Sie beispielsweise folgende Ausgabe des Linux-Befehls df, der den auf bereitgestellten Dateisystemen verfügbaren Speicherplatz für ein System zeigt:

$ df
/dev/root     9983232  2337708  7629140   24%  /
devtmpfs      2524080        0  2524080    0%  /dev
tmpfs         2528080        0  2528080    0%  /dev/shm
...
/dev/sda15     106858     3934   102924    4%  /boot/efi
/dev/loop0      56704    56704        0  100%  /snap/core18/1885
/dev/loop1     129536   129536        0  100%  /snap/google-cloud-sdk/150
...

Für dieses System sollte eine Richtlinie für Benachrichtigungen zur Laufwerknutzung konfiguriert werden, um die Zeitreihen für die Loopback-Geräte /dev/loop0 und /dev/loop1 herausfiltern zu lassen. Sie können beispielsweise den Filter device !=~ ^/dev/loop.* hinzufügen, um alle Zeitreihen auszuschließen, deren device-Label nicht mit dem regulären Ausdruck ^/dev/loop.* übereinstimmt.

Häufige Ursachen für anomale Vorfälle

Sie haben eine Benachrichtigungsrichtlinie erstellt und die Richtlinie scheint vorzeitig oder fälschlicherweise Vorfälle zu erstellen.

Es gibt verschiedene Gründe, warum Sie eine Benachrichtigung über Vorfälle erhalten, die nicht korrekt zu sein scheinen:

  • Wenn es eine Datenlücke gibt, insbesondere bei den Benachrichtigungsrichtlinien mit Bedingungen für das Fehlen von Messwerten oder „weniger als“-Schwellenwerten, kann ein Vorfall erstellt werden, der anomal zu sein scheint. Manchmal wird die Datenlücke nicht im Vorfall angezeigt und manchmal wird sie automatisch korrigiert:

    • In Diagrammen werden Lücken beispielsweise möglicherweise nicht angezeigt, weil die Werte für fehlende Daten interpoliert werden. Selbst bei mehreren Minuten an fehlenden Daten werden die fehlenden Punkte im Diagramm ergänzt, um einen visuellen Zusammenhang herzustellen. Eine solche Lücke in den zugrunde liegenden Daten kann ausreichen, um einen Vorfall über eine Benachrichtigungsrichtlinie zu erstellen.

    • Punkte in logbasierten Messwerten können zu spät eintreffen und automatisch für die vergangenen 10 Minuten aufgefüllt werden. Das Backfill-Verhalten korrigiert die Lücke effektiv. Die Lücke wird ausgefüllt, sobald die Daten eintreffen. Somit kann eine nicht mehr erkennbare Lücke in einem logbasierten Messwert zum Erstellen eines Vorfalls geführt haben.

  • Bedingungen für fehlende Messwerte oder Messwertschwellen, die eine Untergrenze festlegen, werden mit einer kleinen Abfrageverzögerung in Echtzeit ausgewertet. Der Status der Bedingung kann sich zwischen der Zeit der Bewertung und der Zeit ändern, zu dem der entsprechende Vorfall in Monitoring sichtbar ist.

  • Bedingungen, die so konfiguriert sind, dass ein Vorfall auf Basis einer einzelnen Messung erstellt wird, können dazu führen, dass Vorfälle vorzeitig oder falsch erscheinen. Achten Sie zur Vermeidung dieser Situation darauf, dass mehrere Messungen erforderlich sind, bevor ein Vorfall erstellt wird. Dazu legen Sie das Wiederholfenster einer Bedingung auf mehr als das Doppelte der Stichprobenrate des Messwerts fest.

    Beispiel: Wenn ein Messwert alle 60 Sekunden als Stichprobe verwendet wird, legen Sie das Zeitfenster für die Wiederholung auf mindestens 3 Minuten fest. Wenn Sie das Fenster für die Wiederholung auf den aktuellsten Wert oder auf gleich 0 Sekunden festlegen, kann eine einzelne Messung dazu führen, dass ein Vorfall erstellt wird.

  • Wenn die Bedingung einer Benachrichtigungsrichtlinie bearbeitet wird, kann es einige Minuten dauern, bis die Änderung in der Benachrichtigungsinfrastruktur übernommen wird. Während dieser Zeit erhalten Sie möglicherweise Benachrichtigungen zu Vorfällen, die die ursprünglichen Bedingungen der Benachrichtigungsrichtlinie erfüllt haben.

  • Wenn Zeitreihendaten eintreffen, kann es bis zu einer Minute dauern, bis sie sich über die gesamte Benachrichtigungsinfrastruktur ausgebreitet haben. Dabei wird in einer Benachrichtigungsrichtlinie möglicherweise eine Bedingung als erfüllt ausgewertet, obwohl die Zeitreihendaten noch nicht in das Zeitreihendiagramm übertragen wurden. Daher erhalten Sie möglicherweise eine Benachrichtigung, auch wenn das Diagramm nicht anzeigt, dass die Bedingung erfüllt ist. Verwenden Sie einen Ausrichtungszeitraum von mindestens fünf Minuten, um die Wahrscheinlichkeit dieser Situation zu verringern.

Der Vorfall wird nicht geschlossen, wenn keine Daten mehr eingehen

Sie folgen der Anleitung unter Teilweise Messwertdaten und konfigurieren eine Benachrichtigungsrichtlinie, um Vorfälle zu schließen, wenn keine Daten mehr eingehen. In einigen Fällen werden keine Daten mehr empfangen, aber ein offener Vorfall wird nicht automatisch geschlossen.

Wenn die zugrunde liegende Ressource, die von einer Benachrichtigungsrichtlinie überwacht wird, das Label metadata.system_labels.state enthält und diese Richtlinie nicht in Monitoring Query Language (Monitoring Query Language) geschrieben ist, kann das Monitoring den Status der Ressource ermitteln. Wenn der Status einer Ressource bekanntlich deaktiviert ist, werden Vorfälle in Monitoring nicht automatisch geschlossen, wenn keine Daten mehr eingehen. Sie können diese Vorfälle jedoch manuell schließen.

Details zu Vorfällen können aufgrund eines Berechtigungsfehlers nicht angezeigt werden

Rufen Sie in der Google Cloud Console die Seite „Vorfälle“ auf und wählen Sie einen Vorfall aus. Sie erwarten, dass die Detailseite geöffnet ist. Die Detailseite wird jedoch nicht geöffnet und die Meldung „Berechtigung verweigert“ wird angezeigt.

Wenn Sie alle Details zu einem Vorfall mit Ausnahme der Messdaten sehen möchten, benötigen Sie die IAM-Rollen „Monitoring Cloud Console-Vorfallbeobachter“ (roles/monitoring.cloudConsoleIncidentViewer) und „Stackdriver-Kontobetrachter“ (roles/stackdriver.accounts.viewer).

Wenn Sie alle Details zu Vorfällen, einschließlich der Messwertdaten, sehen und Vorfälle bestätigen oder schließen möchten, benötigen Sie die IAM-Rollen „Monitoring-Betrachter“ (roles/monitoring.viewer) und „Monitoring Cloud Console-Vorfallbearbeiter“ (roles/monitoring.cloudConsoleIncidentEditor).

Benutzerdefinierte Rollen können die zur Anzeige von Vorfalldetails erforderlichen Berechtigung nicht erteilen.

Vorfall wird nicht erstellt, wenn Bedingung erfüllt ist

Sie haben eine Benachrichtigungsrichtlinie mit einer Bedingung erstellt. Das Diagramm für die Benachrichtigungsrichtlinie zeigt, dass die überwachten Daten gegen die Bedingung verstoßen, Sie aber keine Benachrichtigung erhalten haben und kein Vorfall erstellt wurde.

Wenn eines der folgenden Kriterien erfüllt ist, nachdem die Bedingung der Benachrichtigungsrichtlinie erfüllt wurde, wird der Vorfall nicht geöffnet.

  • Die Benachrichtigungsrichtlinie ist auf Schlummer gestellt.
  • Die Benachrichtigungsrichtlinie ist deaktiviert.
  • Die Benachrichtigungsrichtlinie hat die maximale Anzahl von Vorfällen erreicht, die gleichzeitig geöffnet werden können.
  • Der Status der Ressource, die von der Benachrichtigungsrichtlinie überwacht wird, ist bekanntlich deaktiviert. Mit dem Monitoring kann der Status einer Ressource ermittelt werden, wenn die Ressource das Label metadata.system_labels.state enthält und die Benachrichtigungsrichtlinie nicht mit der Monitoring Query Language geschrieben wurde.

In den Details zum Vorfall wird das falsche Projekt aufgeführt

Sie erhalten eine Benachrichtigung. In der Zustandsübersicht wird das Google Cloud-Projekt aufgeführt, in dem der Vorfall erstellt wurde, also das Projekt, für das der Umfang festgelegt wird. Sie erwarten jedoch, dass im Fall der Störung der Name des Google Cloud-Projekts aufgeführt ist, in dem die Zeitreihe gespeichert ist, die dazu geführt hat, dass der Vorgang im Monitoring erstellt wurde.

Die in der Bedingung einer Benachrichtigungsrichtlinie angegebenen Aggregationsoptionen bestimmen das Google Cloud-Projekt, auf das in einer Benachrichtigung verwiesen wird:

  • Wenn die Aggregationsoptionen das Label entfernen, in dem die Projekt-ID gespeichert ist, wird in den Informationen zum Vorfall das Projekt zur Bereichsdefinition aufgeführt. Wenn Sie die Daten beispielsweise nur nach Zone gruppieren, wird das Label, in dem die Projekt-ID gespeichert ist, nach der Gruppierung entfernt.

  • Wenn die Aggregationsoptionen das Label beibehalten, in dem die Projekt-ID gespeichert ist, enthalten die Benachrichtigungen zu Vorfällen den Namen des Google Cloud-Projekts, in dem die Zeitreihe gespeichert ist, die den Vorfall verursacht. Wenn Sie das Label der Projekt-ID beibehalten möchten, fügen Sie das Label project_id in das Gruppierungsfeld ein oder gruppieren Sie die Zeitreihe nicht.

Vorfall kann nicht manuell geschlossen werden

Sie haben eine Benachrichtigung zu einem Vorfall auf Ihrem System erhalten. Sie rufen die Seite mit den Vorfalldetails auf und klicken auf Vorfall schließen. Sie gehen davon aus, dass der Fall geschlossen wurde, erhalten jedoch die Fehlermeldung:

Unable to close incident with active conditions.

Sie können einen Vorfall nur schließen, wenn im letzten Benachrichtigungszeitraum keine Beobachtungen eingegangen sind. Der Benachrichtigungszeitraum, der in der Regel einen Standardwert von 5 Minuten hat, wird als Teil der Bedingung der Benachrichtigungsrichtlinie definiert und kann konfiguriert werden. Die vorherige Fehlermeldung gibt an, dass Daten innerhalb des Benachrichtigungszeitraums eingegangen sind.

Der folgende Fehler tritt auf, wenn ein Vorfall aufgrund eines internen Fehlers nicht geschlossen werden kann:

Unable to close incident. Please try again in a few minutes.

Wenn Sie die vorherige Fehlermeldung sehen, können Sie den Vorgang zum Schließen wiederholen oder den Vorfall automatisch von Monitoring schließen lassen.

Weitere Informationen finden Sie unter Vorfälle verwalten.

Mit Richtlinien mit mehreren Bedingungen werden mehrere Benachrichtigungen erstellt

Sie haben eine Benachrichtigungsrichtlinie mit mehreren Bedingungen erstellt und diese Bedingungen mit einem logischen AND verknüpft. Sie erwarten, dass Sie eine Benachrichtigung erhalten und ein Vorfall erstellt wird, wenn alle Bedingungen erfüllt sind. Sie erhalten jedoch mehrere Benachrichtigungen und sehen, dass mehrere Vorfälle erstellt wurden.

Für jede Zeitachse, die eine Bedingung erfüllt, wird eine Benachrichtigung gesendet und ein Vorfall erstellt. Wenn Sie Benachrichtigungsrichtlinien mit mehreren Bedingungen haben, erhalten Sie daher möglicherweise eine Benachrichtigung und einen Vorfall für jede Zeitreihe, die dazu führt, dass die verknüpften Bedingungen erfüllt werden.

Angenommen, Sie haben eine Benachrichtigungsrichtlinie mit zwei Bedingungen, wobei jede Bedingung drei Zeitreihen überwacht. Die Richtlinie sendet nur dann eine Benachrichtigung, wenn beide Bedingungen erfüllt sind. Wenn die Bedingungen Ihrer Richtlinie erfüllt sind, erhalten Sie zwischen zwei (eine Zeitachse wird in jeder Bedingung erfüllt) und sechs (alle Zeitachsen werden in jeder Bedingung erfüllt) Benachrichtigungen und Vorfälle.

Sie können Monitoring nicht so konfigurieren, dass in diesem Fall ein einzelner Vorfall erstellt und eine einzelne Benachrichtigung gesendet wird.

Weitere Informationen finden Sie unter Benachrichtigungen pro Vorfall.

Variable für ein Messwertlabel ist null

Sie erstellen eine Benachrichtigungsrichtlinie und fügen dem Abschnitt „Dokumentation“ eine Variable für ein Messwertlabel hinzu. Sie gehen davon aus, dass in den Benachrichtigungen der Wert der Variablen angezeigt wird. Der Wert ist jedoch auf null festgelegt.

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • Achten Sie darauf, dass in den Aggregationseinstellungen für die Benachrichtigungsrichtlinie das Label beibehalten wird, das angezeigt werden soll.

    Angenommen, Sie erstellen eine Benachrichtigungsrichtlinie, die die von VM-Instanzen geschriebenen Festplatten-Byte überwacht. Sie möchten, dass in der Dokumentation das Gerät aufgeführt wird, das die Benachrichtigung verursacht. Fügen Sie daher dem Dokumentationsfeld Folgendes hinzu: device: ${metric.label.device}.

    Außerdem müssen Sie dafür sorgen, dass der Wert des device-Labels in Ihren Aggregationseinstellungen erhalten bleibt. Sie können dieses Label beibehalten, indem Sie die Aggregationsfunktion auf none festlegen oder dafür sorgen, dass die Gruppierungsauswahlen device enthalten.

  • Prüfen Sie die Syntax und Anwendbarkeit der Variablen. Informationen zur Syntax finden Sie unter Benachrichtigungen mit benutzerdefinierter Dokumentation ergänzen.

    Die Variable log.extracted_label.KEY wird beispielsweise nur für logbasierte Benachrichtigungsrichtlinien unterstützt. Diese Variable wird immer als null gerendert, wenn eine Benachrichtigungsrichtlinie einen Messwert überwacht, auch einen logbasierten Messwert.

Keine neuen Daten nach Änderungen an Messwertdefinitionen

Sie ändern die Definition eines benutzerdefinierten Messwerts, z. B. indem Sie den Filter ändern, den Sie in einem logbasierten Messwert verwendet haben. Die Benachrichtigungsrichtlinie berücksichtigt die Änderung an der Messwertdefinition jedoch nicht.

Um dieses Problem zu beheben, erzwingen Sie die Aktualisierung der Benachrichtigungsrichtlinie, indem Sie den Anzeigenamen der Richtlinie bearbeiten.

Das Erstellen einer Benachrichtigungsrichtlinie in der API schlägt aufgrund eines fehlenden Messwerts fehl

Sie haben vor Kurzem einen Messwert erstellt und dann auf diesen Messwert verwiesen, als Sie versucht haben, eine Benachrichtigungsrichtlinie in der Cloud Monitoring API zu erstellen. Der API-Befehl schlägt jedoch fehl und zeigt den folgenden Fehler an:

Error 404: Cannot find metric(s) that match type = "METRIC_NAME".
If a metric was created recently, it could take up to 10 minutes to become
available. Please try again soon.

Warten Sie mindestens zehn Minuten und reichen Sie die API-Anfrage dann noch einmal ein.