Anwendungsfälle für MQL-Benachrichtigungen

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 die Verwendung von MQL-Abfragen

In diesem Dokument werden mehrere Anwendungsfälle und Beispielabfragen beschrieben. Benachrichtigungsrichtlinien mit einer MQL-basierten Bedingung in einer der Produktionsumgebung.

Benachrichtigung zu dynamischen Grenzwerten

Mit einer MQL-Abfrage können Sie eine Benachrichtigungsrichtlinie konfigurieren, löst Alarme basierend auf einem Schwellenwert aus, der im Laufe der Zeit variiert, z. B. als Wochentage. Diese Konfiguration wird in Benachrichtigungen nicht unterstützt Richtlinienbedingungen ohne MQL-Abfragen.

Beispiel: Sie haben eine MQL-Abfrage, die eine Benachrichtigung sendet, 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 Auslastungsschwellenwert wie 85 % für an Wochenenden, um längere Antwortzeiten Ihres Supportteams zu berücksichtigen. In diesem Fall könnten Sie Ihre Abfrage mit einer Wertspalte konfigurieren, die Benachrichtigungsschwellenwert:

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 ist Sonntag und 6 ist Samstag.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] ersetzt Ihre Tagesnummer durch einen booleschen Wert, der angibt, ob der Datenpunkt war an einem Wochenende oder einem Wochentag.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] ersetzt den booleschen Wert durch einen Schwellenwert, der je nach Wert variiert. von is_weekend.

Die Bedingung condition utilization > scale(max_allowed_utilization) die beiden Wertespalten vergleicht.

Ein Beispiel für eine Benachrichtigungsrichtlinie mit einer MQL-basierten Bedingung, die Konfiguriert Schweregrade von Vorfällen basierend auf dynamischen Kriterien, siehe Dynamische Schweregrade mit MQL erstellen

Benachrichtigung über Schwellenwerte basierend auf der Änderungsrate

Sie können MQL-Abfragen für Benachrichtigungsrichtlinien konfigurieren, um Schwellenwerte auszuwerten basierend auf der Änderungsrate für einen Messwert. Sie möchten z. B. auswerten, die Rate der 5xx Fehler pro Instanz von resource.method in Ihrem API-Anfragen, bei denen Ihre Rate den Anfragen pro Sekunde entspricht. Wenn der Preis größer als 5 Fehlerantworten pro Sekunde ist, sendet eine Warnung:

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, die sich aus dem Verbinden von zwei Messwerten und Teilen der Wertspalten ergeben. Sie möchten beispielsweise das Verhältnis von read Byte im Vergleich zu write abfragen. Byte für jede Ihrer Compute Engine-Instanzen. Wenn das Verhältnis größer ist als 3/5 oder 60%, 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. Zum Beispiel möchten Sie durchschnittliche CPU-Nutzungszeit pro Kern in Ihrer Compute Engine berechnen Instanzen. Wenn das Verhältnis größer als 3/5 oder 60 % ist, gilt: Cloud Monitoring sendet eine Benachrichtigung. In diesem Beispiel müssen Sie auch Eine cast_units-Funktion, 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: