Mit Benachrichtigungsrichtlinien mit einer auf MQL (Monitoring Query Language) basierenden Bedingung können Sie Ihre Benachrichtigungsumgebung für viele mögliche Anwendungsfälle konfigurieren. Bestimmte Konfigurationen sind nur über MQL-Abfragen verfügbar.
In diesem Dokument werden mehrere Anwendungsfälle und Beispielabfragen für die Bereitstellung von Benachrichtigungsrichtlinien mit einer MQL-basierten Bedingung in einer Produktionsumgebung beschrieben.
Benachrichtigung zu dynamischen Grenzwerten
Mit einer MQL-Abfrage können Sie eine Benachrichtigungsrichtlinie konfigurieren, die Benachrichtigungen auf der Grundlage eines Schwellenwerts auslöst, der sich im Zeitverlauf ändert, z. B. an Wochentagen. Diese Konfiguration wird in Bedingungen von Benachrichtigungsrichtlinien ohne MQL-Abfragen nicht unterstützt.
Beispiel: Sie haben eine MQL-Abfrage, die eine Benachrichtigung sendet, wenn die CPU-Auslastung einer Compute Engine-Instanz 95 % überschreitet:
fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization | align | every 30s | condition utilization > 95'%'
Sie möchten jedoch einen niedrigeren Auslastungsgrenzwert festlegen, z. B. 85 % für Wochenenden, um längere Antwortzeiten Ihres Supportteams zu berücksichtigen. In diesem Fall könnten Sie die Abfrage mit einer Wertspalte konfigurieren, die den Benachrichtigungsgrenzwert enthält:
fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization | align | every 30s | value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] | value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] | value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] | condition utilization > scale(max_allowed_utilization)
Die value-Vorgänge führen folgende Schritte aus:
value add [day_of_week: end().timestamp_to_string('%w').string_to_int64]
fügt eine Wertspalte hinzu, deren Wert eine Zahl zwischen 0 und 6 ist, wobei0
für Sonntag und6
für Samstag steht.value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6]
ersetzt die Tagesnummer durch einen booleschen Wert, der angibt, ob sich der Datenpunkt an einem Wochenende oder an einem Wochentag befand.value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')]
ersetzt den booleschen Wert durch einen Schwellenwert, der abhängig vom Wert vonis_weekend
variiert.
Die Bedingung condition utilization > scale(max_allowed_utilization)
vergleicht die beiden Wertspalten.
Ein Beispiel für eine Benachrichtigungsrichtlinie mit einer MQL-basierten Bedingung, die Schweregrade von Vorfällen anhand von dynamischen Kriterien konfiguriert, finden Sie unter Dynamische Schweregrade mit MQL erstellen.
Benachrichtigung über Grenzwerte basierend auf der Änderungsrate
Sie können MQL-Abfragen von Benachrichtigungsrichtlinien konfigurieren, um Schwellenwerte basierend auf der Änderungsrate für einen Messwert auszuwerten. Sie möchten beispielsweise die Rate der 5xx
-Fehler pro Instanz von resource.method
in Ihren API-Anfragen auswerten, wobei die Rate der Anzahl der Anfragen pro Sekunde entspricht. Wenn die Rate mehr als 5 Fehlerantworten pro Sekunde beträgt, sendet Cloud Monitoring eine Benachrichtigung:
fetch consumed_api | metric 'serviceruntime.googleapis.com/api/request_count' | filter (metric.response_code_class == '5xx') | align rate(10m) | every 30s | group_by [resource.method], [value_request_count_mean: mean(value.request_count)] | condition val() > 0.05'1/s'
Sie können Benachrichtigungsrichtlinien zur Änderungsrate ohne MQL erstellen:
- Ein Beispiel für die Verwendung der Google Cloud Console finden Sie unter Änderungsrate überwachen.
- Ein Beispiel für die Verwendung der Cloud Monitoring API finden Sie unter Richtlinie für die Änderungsrate.
Benachrichtigung zu verhältnisbasierten Grenzwerten
Ihre Benachrichtigungsrichtlinie kann eine MQL-Abfrage verwenden, um Verhältnisse auszuwerten, die abgeleitet werden, indem zwei Messwerte verknüpft und dann die Wertspalten geteilt werden.
Sie möchten beispielsweise das Verhältnis von read
Byte zu write
Byte für jede Ihrer Compute Engine-Instanzen abfragen. Wenn das Verhältnis größer als 3/5
oder 60 % ist, sendet Cloud Monitoring eine Benachrichtigung:
{ fetch gce_instance :: compute.googleapis.com/instance/disk/read_bytes_count; fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count } | every 30s | join | value val(0) / val(1) | condition val() > 0.6
Sie können auch das Verhältnis von aggregierten Werten abfragen. Sie möchten beispielsweise die durchschnittliche CPU-Nutzungszeit pro Kern für Ihre Compute Engine-Instanzen berechnen. Wenn das Verhältnis größer als 3/5
oder 60 % ist, sendet Cloud Monitoring eine Benachrichtigung:
{ fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time | group_by [], .sum; fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores | group_by [], .sum } | every 30s | ratio | condition val() > 0.6
Sie können verhältnisbasierte Benachrichtigungsrichtlinien auch ohne MQL erstellen:
- Ein Beispiel für die Verwendung der Google Cloud Console finden Sie unter Verhältnisse berechnen.
- Ein Beispiel für die Verwendung der Cloud Monitoring API finden Sie unter Messwertverhältnis.