Eine Benachrichtigungsrichtlinie wird in der Cloud Monitoring API durch ein Objekt des Typs AlertPolicy
repräsentiert. Sie definiert eine Reihe von Bedingungen, die auf einen potenziell fehlerhaften Systemstatus hinweisen.
In diesem Dokument wird Folgendes beschrieben:
- Darstellung von Benachrichtigungsrichtlinien durch die Monitoring API
- Die Bedingungstypen, die die Monitoring API für Benachrichtigungsrichtlinien bereitstellt.
- Benachrichtigungsrichtlinie mit der Google Cloud CLI oder Clientbibliotheken erstellen
Struktur einer Benachrichtigungsrichtlinie
Die Struktur AlertPolicy
definiert die Komponenten einer Benachrichtigungsrichtlinie. Wenn Sie eine Richtlinie erstellen, geben Sie Werte für die folgenden AlertPolicy
-Felder an:
displayName
: Ein beschreibendes Label für die Richtlinie.documentation
: Alle Informationen, die den Beauftragten zur Verfügung gestellt werden. Dieses Feld ist optional. Dasdocumentation
-Objekt enthält Folgendes:content
: Benutzerdefinierter Text, der im Text der Benachrichtigung angezeigt wird.subject
: Die Betreffzeile der Benachrichtigung. Betreffzeilen sind auf 255 Zeichen beschränkt.
userLabels
: Alle benutzerdefinierten Labels, die der Richtlinie zugeordnet sind. Informationen zur Verwendung von Labels mit Benachrichtigungen finden Sie unter Benachrichtigungen mit Labels versehen.conditions[]
: Ein Array vonCondition
-Strukturen.combiner
: Ein logischer Operator, der bestimmt, wie mehrere Bedingungen verarbeitet werden.notificationChannels[]
: ein Array von Ressourcennamen, die jeweils einenNotificationChannel
identifizieren.alertStrategy
: Gibt an, wie schnell Monitoring Vorfälle schließt, wenn keine Daten mehr eingehen. Dieses Objekt gibt auch an, ob wiederkehrende Benachrichtigungen für messwertbasierte Benachrichtigungen aktiviert sind, und gibt den Abstand zwischen diesen Benachrichtigungen an. Weitere Informationen finden Sie unter Wiederholte Benachrichtigungen senden.
Sie können das Feld severity
auch angeben, wenn Sie die Cloud Monitoring API und die Google Cloud Console verwenden. In diesem Feld können Sie den Schweregrad von Vorfällen definieren. Wenn Sie keinen Schweregrad angeben, legt Cloud Monitoring den Schweregrad der Benachrichtigungsrichtlinie auf No Severity
fest.
Je nach den von Ihnen erstellten Bedingungen können Sie weitere Felder verwenden.
Wenn eine Benachrichtigungsrichtlinie eine Bedingung enthält, wird eine Benachrichtigung gesendet, wenn diese Bedingung erfüllt ist. Informationen zu Benachrichtigungen, wenn Benachrichtigungsrichtlinien mehrere Bedingungen enthalten, finden Sie unter Richtlinien mit mehreren Bedingungen und Anzahl von Benachrichtigungen pro Richtlinie.
Wenn Sie die Benachrichtigungsrichtlinie erstellen oder ändern, legt Monitoring auch andere Felder fest, einschließlich des Felds name
. Der Wert des Felds name
ist der Ressourcenname für die Benachrichtigungsrichtlinie, die die Richtlinie identifiziert. Der Ressourcenname hat das folgende Format:
projects/PROJECT_ID/alertPolicies/POLICY_ID
Bedingungstypen in der API
Die Cloud Monitoring API unterstützt eine Vielzahl von Bedingungstypen in der Struktur Condition
. Es gibt mehrere Bedingungstypen für messwertbasierte Benachrichtigungsrichtlinien und einen für logbasierte Benachrichtigungsrichtlinien. In den folgenden Abschnitten werden die verfügbaren Bedingungstypen beschrieben.
Bedingungen für messwertbasierte Benachrichtigungsrichtlinien
Sie können die folgenden Bedingungstypen verwenden, um eine Benachrichtigungsrichtlinie zu erstellen, die Messwertdaten einschließlich logbasierter Messwerte überwacht:
Filterbasierte Messwertbedingungen
Die Bedingungen MetricAbsence
und MetricThreshold
verwenden Monitoring-Filter, um die zu überwachenden Zeitachsendaten auszuwählen. Andere Felder in der Bedingungsstruktur geben an, wie die Daten gefiltert, gruppiert und aggregiert werden. Weitere Informationen zu diesen Konzepten finden Sie unter Filtern und Aggregation: Zeitachsen bearbeiten.
Mit dem Bedingungstyp MetricAbsence
können Sie eine Bedingung erstellen, die nur erfüllt ist, wenn alle Zeitachsen fehlen. Bei dieser Bedingung wird der Parameter aggregations
verwendet, um mehrere Zeitachsen zu einer einzigen Zeitachse zusammenzufassen. Weitere Informationen finden Sie in der API-Dokumentation in der Referenz zu MetricAbsence
.
Eine Benachrichtigungsrichtlinie für fehlende Messwerte setzt voraus, dass einige Daten zuvor geschrieben wurden. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien für fehlende Messwerte erstellen.
Wenn Sie basierend auf einem prognostizierten Wert benachrichtigt werden möchten, konfigurieren Sie Ihre Benachrichtigungsrichtlinie so, dass der Bedingungstyp MetricThreshold
verwendet und das Feld forecastOptions
festgelegt wird. Wenn dieses Feld nicht festgelegt ist, werden die gemessenen Daten mit einem Grenzwert verglichen.
Wenn dieses Feld jedoch festgelegt ist, werden vorhergesagte Daten mit einem Schwellenwert verglichen. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien für prognostizierte Messwerte erstellen.
MQL-basierte Messwertbedingungen
Die Bedingung MonitoringQueryLanguageCondition
verwendet die Monitoring Query Language (MQL), um die zu überwachenden Zeitachsendaten auszuwählen und zu bearbeiten. Sie können Benachrichtigungsrichtlinien erstellen, die Werte mit einem Schwellenwert vergleichen oder auf das Fehlen von Werten mit diesem Bedingungstyp testen.
Wenn Sie eine MonitoringQueryLanguageCondition
-Bedingung verwenden, muss diese die einzige Bedingung in Ihrer Benachrichtigungsrichtlinie sein. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien mit MQL.
PromQL-basierte Messwertbedingungen
Die Bedingung PrometheusQueryLanguageCondition
verwendet Prometheus Query Language-Abfragen (PromQL), um Zeitreihendaten auszuwählen und zu bearbeiten, die überwacht werden sollen. Sie können eine einfache oder komplexe Abfrage erstellen und Abfragestrukturen wie dynamische Grenzwerte, Verhältnisse, Messwertvergleiche usw. verwenden.
Wenn Sie eine PrometheusQueryLanguageCondition
-Bedingung verwenden, muss dies die einzige Bedingung in Ihrer Benachrichtigungsrichtlinie sein. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien mit PromQL.
Bedingungen für Benachrichtigungen zu Verhältnissen
Sie können Benachrichtigungsrichtlinien mit Messwertschwellen erstellen, um das Verhältnis von zwei Messwerten zu überwachen. Sie können diese Richtlinien entweder mit dem Bedingungstyp MetricThreshold
oder MonitoringQueryLanguageCondition
erstellen.
Sie können MQL auch direkt in der Google Cloud Console verwenden. Über die grafische Benutzeroberfläche zum Erstellen von Schwellenwertbedingungen können Sie keine verhältnisbasierten Bedingungen erstellen oder verwalten.
Wir empfehlen die Verwendung von MQL, um verhältnisbasierte Benachrichtigungsrichtlinien zu erstellen.
Mit MQL können Sie leistungsstärkere und flexiblere Abfragen erstellen, als Sie es mit dem Bedingungstyp MetricTheshold
und Monitoring-Filtern möglich ist.
Mit einer MonitoringQueryLanguageCondition
-Bedingung können Sie beispielsweise das Verhältnis eines absoluten Messwerts zu einem Deltamesswert berechnen. Beispiele finden Sie unter Beispiele für MQL-Benachrichtigungsrichtlinien.
Wenn Sie die Bedingung MetricThreshold
verwenden, müssen Zähler und Nenner des Verhältnisses dieselbe MetricKind
haben.
Eine Liste der Messwerte und ihrer Eigenschaften finden Sie unter Messwertlisten.
Im Allgemeinen ist es am besten, Verhältnisse basierend auf Zeitachsen zu berechnen, die unter Einsatz von Labelwerten für einen einzelnen Messwerttyp erfasst wurden. Ein Verhältnis, das über zwei verschiedene Messwerttypen berechnet wird, unterliegt aufgrund unterschiedlicher Stichprobenzeiträume und Ausrichtungsfenster Anomalien.
Angenommen, Sie haben zwei verschiedene Messwerttypen, eine RPCs-Gesamtzahl und eine RPC-Fehlerzahl, und Sie möchten das Verhältnis von Fehler- zu Gesamtzahl berechnen. Die fehlgeschlagenen RPCs werden in der Zeitreihe beider Messwerttypen gezählt. Daher besteht die Möglichkeit, dass beim Ausrichten der Zeitachse ein fehlgeschlagener RPC nicht im selben Ausrichtungsintervall für beide Zeitachsen angezeigt wird. Dies kann folgende Gründe haben:
- Da zwei verschiedene Zeitachsen dasselbe Ereignis aufzeichnen, gibt es zwei unterliegende Zählerwerte, die die Sammlung implementieren. Diese werden nicht atomar aktualisiert.
- Die Abtastraten können abweichen. Wenn die Zeitachsen auf einen gemeinsamen Zeitraum ausgerichtet sind, kann die Anzahl für ein einzelnes Ereignis in angrenzenden Ausrichtungsintervallen für die verschiedenen Messwerte angezeigt werden.
Die unterschiedliche Anzahl der Werte in den entsprechenden Ausrichtungsintervallen kann zu einem unsinnigen error/total
-Verhältniswert führen, z. B. 1/0 oder 2/1.
Verhältnisse größerer Zahlen führen mit geringerer Wahrscheinlichkeit zu unsinnigen Werten. Sie können größere Zahlen durch Aggregation erhalten, indem Sie entweder ein Ausrichtungsfenster verwenden, das länger als der Stichprobenzeitraum ist, oder Daten für bestimmte Labels gruppieren. Diese Techniken minimieren den Effekt kleiner Unterschiede in der Anzahl der Punkte in einem gegebenen Intervall. Das heißt, ein Zwei-Punkte-Unterschied ist bei einer erwarteten Anzahl von 3 Punkten in einem Intervall signifikanter als bei einer erwarteten Anzahl von 300.
Wenn Sie integrierte Messwerttypen verwenden, haben Sie möglicherweise keine andere Wahl, als die Verhältnisse zwischen den Messwerttypen zu berechnen, um den von Ihnen benötigten Wert zu erhalten.
Wenn Sie benutzerdefinierte Messwerte entwerfen, die die gleiche Sache – wie RPCs, die den Fehlerstatus zurückgeben – in zwei verschiedenen Messwerten zählen könnten, sollten Sie stattdessen einen einzigen Messwert in Betracht ziehen, der jede Zählung nur einmal enthält. Angenommen, Sie zählen RPCs und möchten das Verhältnis von nicht erfolgreichen RPCs zu allen RPCs verfolgen. Zur Behebung dieses Problems erstellen Sie einen einzelnen Messwerttyp, um RPCs zu zählen, und verwenden ein Label, um den Status des Aufrufs einschließlich des Status „OK“ aufzuzeichnen. Dann wird jeder Statuswert bzw. jeder Fehler oder jedes „OK“ aufgezeichnet, indem für diesen Fall ein einzelner Zähler aktualisiert wird.
Bedingung für logbasierte Benachrichtigungsrichtlinien
Verwenden Sie den Bedingungstyp LogMatch
, um eine logbasierte Benachrichtigungsrichtlinie zu erstellen. Sie werden dann benachrichtigt, wenn eine Nachricht, die Ihrem Filter entspricht, in Ihren Logeinträgen angezeigt wird. Wenn Sie eine LogMatch
-Bedingung verwenden, muss sie die einzige Bedingung in Ihrer Benachrichtigungsrichtlinie sein.
Verwenden Sie den Bedingungstyp LogMatch
nicht in Verbindung mit logbasierten Messwerten. Benachrichtigungsrichtlinien, die logbasierte Messwerte überwachen, sind messwertbasierte Richtlinien. Weitere Informationen zur Auswahl zwischen Benachrichtigungsrichtlinien, die logbasierte Messwerte oder Logeinträge überwachen, finden Sie unter Logs überwachen.
Die in den Beispielen im Dokument Benachrichtigungsrichtlinien nach API verwalten verwendeten Benachrichtigungsrichtlinien sind messwertbasierte Benachrichtigungsrichtlinien, wobei die Prinzipien für logbasierte Benachrichtigungsrichtlinien identisch sind. Informationen zu logbasierten Benachrichtigungsrichtlinien finden Sie in der Cloud Logging-Dokumentation unter Logbasierte Benachrichtigungen mit der Monitoring API erstellen.
Hinweise
Bevor Sie Code für die API schreiben, sollten Sie Folgendes tun:
- Machen Sie sich mit den allgemeinen Konzepten und der Terminologie von Benachrichtigungsrichtlinien vertraut. Weitere Informationen finden Sie unter Benachrichtigungen – Übersicht.
- Prüfen Sie, ob die Cloud Monitoring API für die Verwendung aktiviert ist. Weitere Informationen finden Sie unter API aktivieren.
- Wenn Sie Clientbibliotheken verwenden möchten, installieren Sie diese für die Programmiersprachen, die Sie verwenden möchten. Weitere Informationen finden Sie unter Clientbibliotheken. Momentan ist API-Unterstützung für Benachrichtigungen nur für C#, Go, Java, Node.js und Python verfügbar.
Wenn Sie die Google Cloud CLI verwenden möchten, installieren Sie sie. Wenn Sie Cloud Shell verwenden, ist die Google Cloud CLI jedoch bereits installiert.
Sie finden hier auch Beispiele zur Verwendung der
gcloud
-Schnittstelle. Beachten Sie, dass bei den Beispielen zugcloud
davon ausgegangen wird, dass das aktuelle Projekt bereits mitgcloud config set project [PROJECT_ID]
als Ziel festgelegt wurde. Bei Aufrufen wird daher das explizite Flag--project
ausgelassen. Die ID des aktuellen Projekts in den Beispielen lauteta-gcp-project
.
-
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Bearbeiter von Monitoring-Benachrichtigungsrichtlinien (
roles/monitoring.alertPolicyEditor
) für Ihr Projekt zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen und Ändern von Benachrichtigungsrichtlinien mithilfe der Cloud Monitoring API benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Ausführliche Informationen zu IAM-Rollen für Monitoring finden Sie unter Zugriff mit Identity and Access Management steuern.
Entwerfen Sie Ihre Anwendung für Cloud Monitoring API-Aufrufe mit einem einzigen Thread, durch die der Status einer Benachrichtigungsrichtlinie in einem Google Cloud-Projekt geändert wird. Beispiele: Single-Thread-API-Aufrufe, die eine Benachrichtigungsrichtlinie erstellen, aktualisieren oder löschen.
Benachrichtigungsrichtlinie erstellen
Verwenden Sie zum Erstellen einer Benachrichtigungsrichtlinie in einem Projekt die Methode alertPolicies.create
. Informationen zum Aufrufen dieser Methode, ihrer Parameter und der Antwortdaten finden Sie auf der Referenzseite alertPolicies.create
.
Erstellen Sie Richtlinien aus JSON- oder YAML-Dateien.
Die Google Cloud CLI akzeptiert diese Dateien als Argumente. Außerdem können Sie JSON-Dateien programmatisch lesen, in AlertPolicy
-Objekte konvertieren und mit der Methode alertPolicies.create
Richtlinien daraus erstellen. Wenn Sie eine Prometheus JSON- oder YAML-Konfigurationsdatei mit einer Benachrichtigungsregel haben, kann sie von der gcloud CLI zu einer Cloud Monitoring-Benachrichtigungsrichtlinie mit einer PromQL-Bedingung migriert werden. Weitere Informationen finden Sie unter Benachrichtigungsregeln und Empfänger von Prometheus migrieren.
Jede Benachrichtigungsrichtlinie gehört zu einem Scoping-Projekt eines Messwertbereichs. Jedes Projekt kann bis zu 500 Richtlinien enthalten.
Für API-Aufrufe müssen Sie eine „Projekt-ID“ angeben. Verwenden Sie die ID des Bereichs des Bereichs eines Messwerts als Wert. In diesen Beispielen lautet die ID des Scoping-Projekts eines Messwertbereichs a-gcp-project
.
Die folgenden Beispiele veranschaulichen das Erstellen von Benachrichtigungsrichtlinien. Es wird jedoch nicht erläutert, wie eine JSON- oder YAML-Datei mit einer Benachrichtigungsrichtlinie erstellt wird. Stattdessen wird in den Beispielen davon ausgegangen, dass eine Datei im JSON-Format vorhanden ist. Sie veranschaulichen, wie der API-Aufruf ausgeführt wird. Informationen zu JSON-Dateien finden Sie unter Beispielrichtlinien. Allgemeine Informationen zum Überwachen der Verhältnisse von Messwerten finden Sie unter Verhältnisse von Messwerten.
gcloud
Erstellen Sie eine Benachrichtigungsrichtlinie in einem Projekt mit dem Befehl gcloud alpha monitoring
policies create
. Im folgenden Beispiel wird eine Benachrichtigungsrichtlinie in a-gcp-project
mit der Datei rising-cpu-usage.json
erstellt:
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
Bei Erfolg gibt dieser Befehl den Namen der neuen Richtlinie zurück. Beispiel:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
Die Datei rising-cpu-usage.json
enthält die JSON-Datei für eine Richtlinie mit dem Anzeigenamen „High CPU rate of change“ (Hohe CPU-Änderungsrate). Weitere Informationen zu dieser Richtlinie finden Sie unter Richtlinie für die Änderungsrate.
Weitere Informationen finden Sie in der Referenz gcloud alpha monitoring policies create
.
C#
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
PHP
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Das erstellte AlertPolicy
-Objekt enthält zusätzliche Felder.
Die Richtlinie selbst hat die Felder name
, creationRecord
und mutationRecord
. Darüber hinaus wird für jede Bedingung in der Richtlinie das Feld name
angegeben.
Diese Felder können nicht extern geändert werden, sodass sie beim Erstellen einer Richtlinie nicht festgelegt werden müssen. Sie sind in keinem der JSON-Beispiele zum Erstellen von Richtlinien enthalten. Wenn jedoch aus ihnen erstellte Richtlinien nach der Erstellung abgerufen werden, sind die Felder vorhanden.
Nächste Schritte
- Benachrichtigungsrichtlinien nach API verwalten
- Benachrichtigungskanäle nach API erstellen und verwalten