Cas d'utilisation des alertes MQL

Règles d'alerte avec une condition basée sur le langage MQL (Monitoring Query Language) vous permettent de configurer votre environnement d'alerte pour de nombreux cas d'utilisation possibles. Certaines configurations ne sont disponibles Requêtes MQL.

Ce document décrit plusieurs cas d'utilisation et des exemples de requêtes. pour déployer des règles d'alerte avec une condition basée sur MQL dans un environnement de production.

Alerte sur les seuils dynamiques

Vous pouvez utiliser une requête MQL pour configurer une règle d'alerte qui déclenche des alertes en fonction d'un seuil qui varie au fil du temps, en tant que jours de la semaine. Cette configuration n'est pas compatible avec les alertes sans requêtes MQL.

Par exemple : vous disposez d'une requête MQL qui envoie une alerte si l'utilisation du CPU d'une instance Compute Engine dépasse 95%:

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| condition utilization > 95'%'

Toutefois, vous pouvez définir un seuil d'utilisation plus bas (85%, par exemple) week-ends, afin de tenir compte des délais de réponse plus longs de la part de l'équipe d'assistance. Dans ce cas, vous pouvez configurer votre requête avec une colonne de valeur qui contient le seuil d'alerte:

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)

Les opérations value effectuent les opérations suivantes:

  • value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] ajoute une colonne de valeur dont la valeur est un nombre compris entre 0 et 6, où 0 correspond à dimanche et 6 à samedi.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] remplace le numéro du jour par une valeur booléenne indiquant si le point de données était un week-end ou un jour de semaine.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] remplace la valeur booléenne par un seuil qui varie en fonction de la valeur sur is_weekend.

La condition, condition utilization > scale(max_allowed_utilization), compare les deux colonnes de valeurs.

Prenons l'exemple d'une règle d'alerte avec une condition basée sur MQL qui configure les niveaux de gravité des incidents en fonction de critères dynamiques, Créer des niveaux de gravité dynamiques à l'aide de MQL.

Alerter sur les seuils en fonction du taux de variation

Vous pouvez configurer des requêtes MQL de règles d'alerte pour évaluer les seuils en fonction du taux de variation d'une métrique. Par exemple, vous voulez évaluer le taux d'erreurs 5xx par instance de resource.method dans votre Requêtes API, où votre tarif équivaut au nombre de requêtes par seconde. Si le tarif est supérieure à 5 réponses d'erreur par seconde, Cloud Monitoring envoie une alerte:

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'

Vous pouvez créer des règles d'alerte de taux d'évolution sans utiliser MQL:

Alerte sur les seuils basés sur un ratio

Votre règle d'alerte peut utiliser une requête MQL pour évaluer les ratios obtenus en associant deux métriques, puis en divisant les colonnes de valeur. Par exemple, vous souhaitez interroger le ratio de read octets par rapport à write pour chacune de vos instances Compute Engine. Si le ratio est supérieur supérieur à 3/5, soit 60%, Cloud Monitoring envoie une alerte:

{
  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

Vous pouvez également interroger le ratio des valeurs agrégées. Par exemple, vous voulez calculer le temps d'utilisation moyen du processeur par cœur sur l'ensemble Compute Engine Compute Engine. Si le ratio est supérieur à 3/5 ou à 60%, alors Cloud Monitoring envoie une alerte. Dans cet exemple, vous devez également inclure Une fonction cast_units pour aligner les unités de mesure

{
  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

Vous pouvez créer des règles d'alerte basées sur des ratios sans utiliser MQL: