Anwendungsfälle für MQL-Benachrichtigungen

Mit Benachrichtigungsrichtlinien mit einer auf Monitoring Query Language (MQL) 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 zum Bereitstellen 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 anhand eines Schwellenwerts auslöst, der im Laufe der Zeit variiert, z. B. an Wochentagen. Diese Konfiguration wird in Bedingungen für Benachrichtigungsrichtlinien ohne MQL-Abfragen nicht unterstützt.

Nehmen wir an, 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 sollten jedoch einen niedrigeren Auslastungsgrenzwert wie 85 % für Wochenenden festlegen, um längere Antwortzeiten Ihres Supportteams zu berücksichtigen. In diesem Fall könnten Sie Ihre Abfrage mit einer Wertspalte konfigurieren, die den Benachrichtigungsschwellenwert 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)

Mit den value-Vorgängen wird Folgendes ausgeführt:

  • 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, wobei 0 für Sonntag und 6 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 der Datenpunkt an einem Wochenende oder an einem Wochentag lag.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] ersetzt den booleschen Wert durch einen Schwellenwert, der abhängig vom Wert von is_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 basierend auf dynamischen Kriterien konfiguriert, finden Sie unter Dynamische Schweregrade mit MQL erstellen.

Benachrichtigung über Schwellenwerte basierend auf der Änderungsrate

Sie können MQL-Abfragen für Benachrichtigungsrichtlinien konfigurieren, um Schwellenwerte anhand der Änderungsrate eines Messwerts auszuwerten. Beispiel: Sie möchten die Rate der 5xx-Fehler pro Instanz von resource.method in Ihren API-Anfragen auswerten, wobei Ihre Rate der Anzahl der Anfragen pro Sekunde entspricht. Wenn die Rate mehr als fünf 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 für die Änderungsrate ohne MQL erstellen:

Benachrichtigung zu verhältnisbasierten Schwellenwerten

Ihre Benachrichtigungsrichtlinie kann eine MQL-Abfrage verwenden, um Verhältnisse auszuwerten, die sich daraus ergeben, dass zwei Messwerte zusammengeführt 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 der aggregierten Werte abfragen. Sie möchten beispielsweise die durchschnittliche CPU-Nutzungszeit pro Kern für alle Compute Engine-Instanzen berechnen. Wenn das Verhältnis größer als 3/5 oder 60 % ist, sendet Cloud Monitoring eine Benachrichtigung. In diesem Beispiel müssen Sie auch die Funktion cast_units einfügen, um die Maßeinheiten auszurichten.

{
  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 | cast_units('s{CPU}')
}
| every 30s
| ratio
| condition val() > 0.6

Sie können verhältnisbasierte Benachrichtigungsrichtlinien ohne MQL erstellen: