Règles d'alerte avec MQL

Vous pouvez créer des règles d'alerte Monitoring dont la condition inclut une requête MQL (Monitoring Query Language). Les requêtes MQL pour les conditions de la règle d'alerte sont semblables aux autres requêtes MQL, si ce n'est qu'elles incluent également une opération d'alerte MQL. Si vous utilisez MQL dans une condition, cette condition doit être la seule condition de la règle.

Cette page présente les opérations d'alerte MQL et explique comment créer une règle d'alerte qui les utilise. Pour obtenir des informations générales sur les règles d'alerte Monitoring, consultez la page Comportement des règles d'alerte basées sur les métriques.

Premiers pas

Toutes les requêtes MQL commencent par les composants suivants:

  • Une opération fetch, qui récupère des séries temporelles à partir de Cloud Monitoring
  • Un argument, composé d'une ressource surveillée et d'un type de métrique, qui identifie la série temporelle à extraire.

Par exemple, la requête suivante récupère les séries temporelles écrites par les instances Compute Engine pour le type de métrique compute.googleapis.com/instance/cpu/utilization, qui enregistre l'utilisation du processeur de ces instances:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization

L'argument de la commande fetch est constitué d'un type de ressource surveillée gce_instance, d'une paire de deux-points :: et d'un type de métrique compute.googleapis.com/instance/cpu/utilization.

Pour utiliser votre requête dans une règle d'alerte avec une condition basée sur MQL, votre requête doit se terminer par une opération qui définit les paramètres sous lesquels Cloud Monitoring déclenche une alerte. L'opération varie selon que vous créez une règle d'alerte basée sur le seuil de métriques ou une règle d'alerte en cas d'absence de métrique.

Requêtes MQL pour les règles d'alerte liées à un seuil de métrique

Les requêtes MQL basées sur le seuil de métrique nécessitent l'opération condition, qui évalue une expression booléenne à chaque point du temps d'exécution de la requête. Si l'expression renvoie la valeur true pour tous les points de l'intervalle de temps, Cloud Monitoring déclenche une alerte.

Par exemple, la requête suivante évalue les instances de VM Compute Engine et déclenche une alerte si une instance a écrit plus de 5 gigaoctets sur le disque au cours des dernières 24 heures:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition val() > 5'GBy'

Vous pouvez utiliser des conditions complexes pour évaluer des plages de données spécifiques. Par exemple, la condition suivante déclenche une alerte si, au cours des dernières 24 heures, une instance de VM a écrit plus de cinq gigaoctets de données et moins de six gigaoctets de données, ou plus de 8 Go de données:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition (val() > 5'GBy' && val() < 6'GBy') || val() > 8'GBy'

L'exemple suivant utilise filter, une opération group_by glissante et une condition complexe pour évaluer chaque point de données d'une table d'entrée alignée et déterminer si la valeur d'utilisation dépasse la valeur seuil de 15%:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| group_by sliding(5m), mean(val())
| every 30s
| condition val() > .15 '10^2.%'

Dans la requête précédente, la table résultant de l'opérateur condition comporte deux colonnes de valeurs : une colonne booléenne enregistrant le résultat de l'évaluation du seuil et une autre contenant une copie de la colonne de valeur utilization de la table d'entrée. Étant donné que le paramètre de fenêtre group_by par défaut est glissant, l'expression group_by est identique à group_by 5m, mean(val()).

La valeur d'utilisation du processeur est stockée sous forme d'utilisation fractionnelle. Les valeurs sont comprises entre 0.0 et 1.0. Le descripteur de métrique spécifie l'unité pour ces valeurs sous la forme 10^2.%, que le graphique affiche sous forme de pourcentage. Les unités du seuil doivent être compatibles. Nous exprimons donc le seuil sous la forme .15 '10^2.%.

Requêtes MQL pour les règles d'alerte en cas d'absence de métrique

Les requêtes MQL d'absence de métrique utilisent l'opération absent_for, qui prend une durée pendant laquelle les données doivent être manquantes. Par exemple, la requête suivante permet de vérifier si des données sont manquantes dans les zones centrales des États-Unis depuis huit heures:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| every 30s
| absent_for 8h

L'opération absent_for ne prend qu'un argument de durée, qui indique la durée pendant laquelle les données doivent être absentes pour répondre à la condition.

Les données sont considérées comme absentes si elles se sont affichées au cours de la dernière période de 24 heures, mais pas pendant la durée définie, pour cet exemple, au cours des huit dernières heures.

Une requête absent_for crée une table de sortie avec des valeurs alignées, à l'aide de l'alignement par défaut ou d'une opération every après l'opération absent_for.

La table de sortie comporte deux colonnes.

  • La première est la colonne active, qui enregistre les résultats booléens pour l'absence de données. Une valeur true signifie qu'il y a eu un point d'entrée au cours des dernières 24 heures et aucun au cours de la période concernée.

  • La second colonne correspond à la colonne signal. Si la table d'entrée comporte des colonnes de valeurs, la colonne signal contient la valeur de la première colonne de valeur du point d'entrée le plus récent. Si la table d'entrée ne comporte aucune colonne de valeurs, la colonne signal contient le nombre de minutes écoulées depuis l'enregistrement du dernier point d'entrée. Vous pouvez forcer ce cas, comme illustré dans l'exemple suivant:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | every 30s
    | absent_for 8h
    

    Dans l'exemple précédent, l'opération value [] supprime les colonnes de valeur de sa table d'entrée. Par conséquent, la colonne signal de la table créée par l'opération absent_for contient le nombre de minutes écoulées depuis que le dernier point d'entrée a été enregistré.

Configuration des règles d'alerte

En plus de la requête MQL, une condition de règle d'alerte inclut deux autres valeurs :

  • Le nombre de séries temporelles d'entrée qui doivent remplir la condition. La valeur peut être l'une des suivantes :
    • Une seule série temporelle,
    • Un nombre spécifique de séries temporelles,
    • Un pourcentage de séries temporelles,
    • Toutes les séries temporelles,
  • La durée de l'état d'alerte, c'est-à-dire la durée pendant laquelle la condition d'alerte doit évaluer en continu sur true.

Si la requête renvoie en continu la valeur true pour la durée spécifiée pour une série temporelle particulière, cette série est considérée comme active. Lorsque le nombre de séries temporelles spécifié est actif, la règle d'alerte est déclenchée et une alerte est générée pour chaque série temporelle active. Pour en savoir plus sur l'évaluation des règles d'alerte, consultez la section Comportement des règles d'alerte basées sur les métriques.

Lorsque des données de séries temporelles cessent d'arriver ou lorsque des données sont retardées, Monitoring classe les données comme manquantes. Pour plus d'informations sur la configuration de Monitoring pour évaluer les conditions de seuil de métrique lorsque les données cessent d'arriver, consultez la section Données de métrique partielles.

Si vous utilisez MQL dans une condition, il doit s'agir de la seule condition de la règle. Vous ne pouvez pas utiliser plusieurs conditions dans les règles d'alerte basées sur MQL.

Consignes

MQL vous permet de créer des étiquettes définies par l'utilisateur et de les associer à des incidents. Pour obtenir des exemples, consultez la section Ajouter des niveaux de gravité à une règle d'alerte.

Les unités des types de métriques sont répertoriées dans la table appropriée des types de métriques. Pour le type de métrique compute.googleapis.com/instance/cpu/utilization, consultez la table compute.

Étapes suivantes

Pour en savoir plus sur l'utilisation de la console Google Cloud et de l'API Cloud Monitoring pour créer une règle d'alerte avec une condition basée sur MQL, consultez la page Créer des alertes MQL.

Pour obtenir une liste de consignes et de recommandations pour configurer des règles d'alerte efficaces avec une condition basée sur MQL, consultez la section Bonnes pratiques pour les alertes MQL.

Pour en savoir plus sur la résolution des problèmes courants liés aux règles d'alerte avec une condition basée sur MQL, consultez Résoudre les problèmes liés aux alertes MQL.

Pour obtenir des exemples de règles d'alerte avec une condition basée sur MQL, consultez la section Cas d'utilisation des alertes MQL.