Anwendungsfälle für MQL-Benachrichtigungen

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, 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 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 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 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:

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: