Benachrichtigungsrichtlinien mit MQL

Sie können Monitoring-Benachrichtigungsrichtlinien erstellen, deren Bedingung eine MQL-Abfrage (Monitoring Query Language) enthält. MQL-Abfragen für Bedingungen von Benachrichtigungsrichtlinien ähneln anderen MQL-Abfragen, enthalten jedoch auch einen MQL-Benachrichtigungsvorgang. Wenn Sie MQL in einer Bedingung verwenden, muss diese Bedingung die einzige Bedingung in der Richtlinie sein.

Auf dieser Seite werden MQL-Benachrichtigungsvorgänge vorgestellt und beschrieben, wie Sie eine Benachrichtigungsrichtlinie erstellen, in der diese verwendet werden. Allgemeine Informationen zu Benachrichtigungsrichtlinien von Monitoring finden Sie unter Verhalten von messwertbasierten Benachrichtigungsrichtlinien.

Mehr erfahren

Alle MQL-Abfragen beginnen mit den folgenden Komponenten:

  • Ein fetch-Vorgang, der Zeitachsen aus Cloud Monitoring abruft.
  • Ein Argument, das aus einer überwachten Ressource und einem Messwerttyp besteht und die abzurufende Zeitachse identifiziert.

Die folgende Abfrage ruft beispielsweise die von Compute Engine-Instanzen für den Messwerttyp compute.googleapis.com/instance/cpu/utilization geschriebene Zeitachse ab, die die CPU-Auslastung dieser Instanzen aufzeichnet:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization

Das Argument des Befehls fetch besteht aus dem Typ gce_instance für überwachte Ressourcen, einem Doppelpunktzeichen :: und dem Messwerttyp compute.googleapis.com/instance/cpu/utilization.

Damit Sie die Abfrage in einer Benachrichtigungsrichtlinie mit einer MQL-basierten Bedingung verwenden können, muss sie mit einem Vorgang enden, der die Parameter definiert, unter denen Cloud Monitoring eine Benachrichtigung auslöst. Der Vorgang hängt davon ab, ob Sie eine Benachrichtigungsrichtlinie für Messwertgrenzwerte oder eine Benachrichtigungsrichtlinie für fehlende Messwerte erstellen.

MQL-Abfragen für Benachrichtigungsrichtlinien für Messwertgrenzwerte

Für MQL-Abfragen mit Messwertgrenzwerten ist der Vorgang condition erforderlich, mit dem an jedem Punkt der Ausführungszeit einer Abfrage ein boolescher Ausdruck ausgewertet wird. Wenn der Ausdruck für alle Punkte im Dauerfenster als true ausgewertet wird, löst Cloud Monitoring eine Benachrichtigung aus.

Die folgende Abfrage wertet beispielsweise Compute Engine-VM-Instanzen aus und löst eine Benachrichtigung aus, wenn eine Instanz in den letzten 24 Stunden mehr als 5 Gigabyte auf das Laufwerk geschrieben hat:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition val() > 5'GBy'

Sie können komplexe Bedingungen verwenden, um bestimmte Datenbereiche auszuwerten. Die folgende Bedingung löst beispielsweise eine Benachrichtigung aus, wenn eine VM-Instanz in den letzten 24 Stunden mehr als 5 Gigabyte und weniger als 6 Gigabyte Daten oder mehr als 8 Gigabyte Daten geschrieben hat:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition (val() > 5'GBy' && val() < 6'GBy') || val() > 8'GBy'

Im folgenden Beispiel werden filter, ein gleitender group_by-Vorgang und eine komplexe Bedingung verwendet, um jeden Datenpunkt in einer ausgerichteten Eingabetabelle auszuwerten und zu bestimmen, ob der Auslastungswert den Grenzwert von 15 % überschreitet:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| group_by sliding(5m), mean(val())
| every 30s
| condition val() > .15 '10^2.%'

In der vorherigen Abfrage hat die aus dem Operator condition resultierende Tabelle zwei Wertspalten, eine boolesche Spalte, die das Ergebnis der Schwellenwertauswertung enthält, und eine zweite, die eine Kopie der Wertspalte utilization aus der Eingabetabelle enthält. Da die Standardeinstellung für das group_by-Fenster gleitend ist, ist der group_by-Ausdruck mit group_by 5m, mean(val()) identisch.

Der CPU-Auslastungswert wird als anteilige Auslastung gespeichert. Der Wertebereich liegt zwischen 0 und 1,0. Der Messwertdeskriptor gibt die Einheit für diesen Wert als 10^2.% an. Dies wird im Diagramm als Prozentwert angezeigt. Die Einheiten für den Schwellenwert müssen kompatibel sein. Entsprechend geben wir den Schwellenwert als .15 '10^2.% an.

MQL-Abfragen für Benachrichtigungsrichtlinien für fehlende Messwerte

Bei MQL-Abfragen ohne Messwerte wird der Vorgang absent_for verwendet. Dieser Vorgang nimmt eine Zeit in Anspruch, in der Daten fehlen müssen. Die folgende Abfrage testet beispielsweise, ob Daten in den zentralen US-Zonen acht Stunden lang fehlen:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| every 30s
| absent_for 8h

Der Vorgang absent_for verwendet nur ein Argument für die Dauer als Eingabe, das angibt, wie lange Daten fehlen müssen, um die Bedingung zu erfüllen.

Daten gelten als fehlend, wenn sie in den letzten 24 Stunden vorhanden waren, aber nicht innerhalb der festgelegten Dauer. In diesem Beispiel in den letzten acht Stunden.

Eine absent_for-Abfrage erstellt eine Ausgabetabelle mit ausgerichteten Werten. Dies kann entweder die Standardausrichtung oder ein every-Vorgang nach dem absent_for-Vorgang sein.

Die Ausgabetabelle hat zwei Spalten.

  • Die erste ist die Spalte active, in der die booleschen Ergebnisse für fehlende Daten aufgezeichnet werden. Der Wert true bedeutet, dass es innerhalb der letzten 24 Stunden einen Eingabepunkt gab und keinen während der Zeitdauer.

  • Die zweite Spalte ist die Spalte signal. Enthält die Eingabetabelle Wertespalten, so enthält die Spalte signal den Wert aus der ersten Wertspalte des letzten Eingabepunkts. Enthält die Eingabetabelle keine Wertspalten, so enthält die Spalte signal die Anzahl der Minuten seit der letzte Eingabepunkt aufgenommen wurde. Sie können dies erzwingen, wie im folgenden Beispiel gezeigt:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | every 30s
    | absent_for 8h
    

    Im vorherigen Beispiel entfernt der Vorgang value [] die Wertspalten aus der Eingabetabelle, sodass die Spalte signal in der durch den Vorgang absent_for erstellten Tabelle die Anzahl der Minuten angibt, die vergangen sind, seit der letzte Eingabepunkt aufgezeichnet wurde.

Konfiguration der Benachrichtigungsrichtlinie

Neben der MQL-Abfrage enthält eine Benachrichtigungsrichtlinien-Bedingung zwei weitere Werte:

  • Die Anzahl der Eingabezeitachsen, die die Bedingung erfüllen müssen. Folgende Werte sind möglich:
    • Eine einzelne Zeitreihe.
    • Eine bestimmte Anzahl von Zeitachsen.
    • Ein Prozentsatz der Zeitachsen.
    • Alle Zeitachsen.
  • Dauer des Benachrichtigungsstatus, d. h. wie lange die Benachrichtigungsbedingung fortlaufend true ergeben muss.

Wird die Abfrage für die angegebene Dauer für eine bestimmte Zeitachse kontinuierlich als true ausgewertet, gilt diese Zeitachse als aktiv. Wenn die angegebene Anzahl von Zeitreihen aktiv ist, wird die Benachrichtigungsrichtlinie ausgelöst und für jede aktive Zeitreihe wird eine Benachrichtigung generiert. Weitere Informationen zum Auswerten von Benachrichtigungsrichtlinien finden Sie unter Verhalten von messwertbasierten Benachrichtigungsrichtlinien.

Wenn keine Zeitreihendaten mehr ankommen oder Daten verzögert sind, klassifiziert Monitoring die Daten als fehlend. Informationen zum Konfigurieren von Monitoring, um Bedingungen für Messwertgrenzwerte auszuwerten, wenn keine Daten mehr eingehen, finden Sie unter Teilmesswertdaten.

Wenn Sie MQL in einer Bedingung verwenden, muss diese die einzige Bedingung in der Richtlinie sein. Sie dürfen in MQL-basierten Benachrichtigungsrichtlinien nie mehrere Bedingungen verwenden.

Leitlinien

Mit MQL können Sie benutzerdefinierte Labels erstellen und an Vorfälle anhängen. Beispiele finden Sie unter Schweregrad zu einer Benachrichtigungsrichtlinie hinzufügen.

Die Einheiten für die Messwerttypen sind in der entsprechenden Tabelle der Messwerttypen aufgeführt. Informationen zum Messwerttyp compute.googleapis.com/instance/cpu/utilization finden Sie in der Tabelle compute.

Nächste Schritte

Informationen zum Erstellen einer Benachrichtigungsrichtlinie mit einer MQL-basierten Bedingung mit der Google Cloud Console und der Cloud Monitoring API finden Sie unter MQL-Benachrichtigungen erstellen.

Eine Liste von Richtlinien und Empfehlungen zum Konfigurieren effektiver Benachrichtigungsrichtlinien mit einer MQL-basierten Bedingung finden Sie unter Best Practices für MQL-Benachrichtigungen.

Informationen zum Beheben häufiger Probleme mit Benachrichtigungsrichtlinien mit einer MQL-basierten Bedingung finden Sie unter Fehlerbehebung für MQL-Benachrichtigungen.

Beispiele für Benachrichtigungsrichtlinien mit einer MQL-basierten Bedingung finden Sie unter Anwendungsfälle für MQL-Benachrichtigungen.