Cas d'utilisation des alertes MQL

Les 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 que via l'utilisation de requêtes MQL.

Ce document décrit plusieurs cas d'utilisation et des exemples de requêtes permettant de 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 variable au fil du temps, comme les jours de la semaine. Cette configuration n'est pas compatible avec les conditions de règle d'alerte sans requêtes MQL.

Par exemple, une requête MQL envoie une alerte si l'utilisation du processeur 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 moins élevé (par exemple, 85 %) pour les week-ends afin de tenir compte des temps de réponse plus longs de votre équipe d'assistance. Dans ce cas, vous pouvez configurer votre requête avec une colonne de valeur contenant 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 votre numéro de 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 de is_weekend.

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

Pour obtenir un exemple de 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, consultez la section 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 souhaitez évaluer le taux d'erreurs 5xx par instance de resource.method dans vos requêtes API, votre taux étant équivalent au nombre de requêtes par seconde. Si le taux est supérieur à cinq 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 dérivés en associant deux métriques, puis en divisant les colonnes de valeur. Par exemple, vous souhaitez interroger le ratio entre read octets et write octets pour chacune de vos instances Compute Engine. Si le ratio est supérieur à 3/5 ou à 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 souhaitez calculer le temps d'utilisation moyen du processeur par cœur sur vos instances Compute Engine. Si le ratio est supérieur à 3/5, ou à 60%, 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:

  • Pour obtenir un exemple utilisant la console Google Cloud, consultez la section Ratios de calcul.
  • Pour obtenir un exemple utilisant l'API Cloud Monitoring, consultez la section Ratio de métriques.