Règles d'alerte avec MQL

Vous pouvez créer des règles d'alerte Monitoring dont la condition inclut une requête MQL. Les requêtes MQL pour les conditions d'alerte sont semblables aux autres requêtes MQL, à la différence qu'elles incluent également une opération d'alerte MQL.

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.

Opérations d'alerte MQL

Vous pouvez créer des règles d'alerte avec seuil et absence avec MQL.

Pour créer une règle d'alerte basée sur MQL, utilisez l'une des opérations d'alerte MQL suivantes dans votre requête :

  • Opération condition pour les alertes de seuil
  • Opération absent_for pour les alertes d'absence

Votre requête doit se terminer par l'une de ces opérations. Pour en savoir plus, consultez la section Alertes de la documentation de référence sur MQL.

Votre requête ne doit pas inclure une période spécifique c'est-à-dire une opération within.

Lorsque vous utilisez MQL pour créer une règle d'alerte, vous devez créer une requête MQL avec fetch, filter, group_by, etc. afin d'identifier la série temporelle cible. Cette partie de la requête est identique à une requête servant à récupérer des données de séries temporelles pour un graphique. Par exemple, la requête suivante extrait la valeur d'utilisation du processeur pour toutes les instances de VM Compute Engine dans n'importe quelle région du centre des États-Unis :

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'

Cette requête génère une table de sortie. Pour créer une alerte, dirigez la table de sortie vers une opération d'alerte. L'opération d'alerte calcule les valeurs booléennes des valeurs de données dans la table de sortie générée par la requête précédant l'opération d'alerte.

L'opération d'alerte spécifie une expression permettant d'évaluer les données de la table d'entrée. Pour une condition de seuil, l'expression teste chaque point par rapport à un seuil, par exemple "La valeur est-elle inférieure à 0.5 ?".

Le système d'alerte Monitoring utilise les résultats de l'opération d'alerte pour déterminer si et quand une règle alerte est déclenchée. La section Configuration des alertes décrit le mode de prise de décision.

Alertes de seuil

Pour les alertes de seuil, utilisez l'opération condition. L'opération de condition prend une expression qui évalue une valeur par rapport à un seuil (par exemple, "La valeur est supérieure à 15 %") et renvoie une valeur booléenne.

L'opération condition nécessite que la table d'entrée soit alignée avec un intervalle d'alignement explicite. Pour aligner la table d'entrée avec un intervalle explicite, spécifiez un intervalle d'alignement sur une opération align — par exemple, align delta_gauge(5m) — ou utilisez une valeur temporelle group_by avec une fenêtre à durée flexible. L'exemple suivant illustre l'utilisation de group_by avec une opération sliding :

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

Comme le paramètre d'intervalle group_by par défaut est flexible, l'expression group_by de la requête précédente est identique à group_by 5m, mean(val()).

La condition teste chaque point de données de la table d'entrée alignée pour déterminer si la valeur d'utilisation dépasse le seuil de 15 %. La table résultant de l'opérateur condition contient deux colonnes de valeurs : une colonne booléenne qui enregistre le résultat de l'évaluation du seuil et une seconde contenant une copie de la colonne de valeurs utilization de la table d'entrée.

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.%.

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.

Pour plus d'informations sur les unités dans MQL, consultez la section Unités de mesure.

Alertes d'absence

Pour les alertes d'absence, utilisez l'opération absent_for, qui accepte une durée pendant laquelle les données doivent être manquantes. Par exemple, les tests suivants permettent de déterminer si des données ont été absentes des zones du centre des États-Unis pendant huit heures :

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| 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 contient 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 facilement forcer ce cas, comme illustré dans l'exemple suivant :

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | 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 alertes

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.

Lorsque la requête d'alerte renvoie en continu la valeur true pour la durée spécifiée d'une série temporelle spécifique, cette série temporelle est considérée comme active. Lorsque le nombre spécifié de séries temporelles 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 page Comportement des règles d'alerte.

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.

Créer des règles d'alerte MQL (console)

Pour créer une règle d'alerte basée sur MQL à partir de Google Cloud Console, suivez la procédure habituelle permettant de créer la règle, décrite dans Gérer les règles d'alerte. Lorsque vous créez la condition pour la règle d'alerte, utilisez l'éditeur de requête au lieu du sélecteur de métrique basée sur un formulaire.

Éditeur de conditions pour les règles d'alerte basées sur MQL.

Remplissez la condition comme suit :

  1. Nommez votre condition en saisissant une valeur dans le champ Untitled Condition (Condition sans titre). Une fois enregistrée, la condition se voit attribuer un identifiant numérique. Ce nom à afficher facultatif peut fournir une description plus pertinente.

  2. Pour lancer votre condition d'alerte, saisissez la requête qui sélectionne les données que vous souhaitez surveiller dans l'éditeur de requête. La requête suivante extrait les séries temporelles et les aligne sur un intervalle de cinq minutes :

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    

    Si vous cliquez sur Run Query (Exécuter la requête) à ce stade, un graphique s'affiche. Pour un projet, la requête ci-dessus a généré le résultat suivant :

    Graphique d'une condition d'alerte avant la spécification de l'alerte.

  3. Ajoutez une clause d'alerte à la requête en utilisant l'une des opérations suivantes :

    • L'opérateur condition, pour une alerte de seuil
    • L'opérateur absent_for, pour une alerte d'absence

    Pour plus d'informations sur ces opérations d'alerte, consultez la section Alertes dans la documentation de référence sur MQL.

    L'exemple suivant utilise l'opération condition pour spécifier un seuil :

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    | condition val() > .05
    

    Si vous cliquez sur Exécuter la requête à ce stade, le graphique ajoute une ligne de seuil pour la condition, comme illustré dans la capture d'écran suivante :

    Graphique d'une condition d'alerte après la spécification de l'alerte.

  4. Si vous n'avez pas encore exécuté votre requête, cliquez sur Exécuter la requête.

  5. Dans le volet Configuration, indiquez à quel moment la règle d'alerte doit être déclenchée. Deux valeurs doivent être spécifiées :

    • Le paramètre Condition triggers if (Déclenchement de la condition si) vous permet de spécifier le nombre de séries temporelles renvoyées par la requête devant satisfaire l'opération d'alerte avant que la règle d'alerte puisse être déclenchée. Vous pouvez spécifier les critères de ciblage suivants :

      • Une seule série temporelle,
      • Un nombre spécifique de séries temporelles,
      • Un pourcentage de la série temporelle,
      • Toutes les séries temporelles.
    • For (Pendant) vous permet de spécifier la durée pendant laquelle la condition doit être remplie pour la règle d'alerte puisse être déclenchée. Cette valeur est différente de l'intervalle d'alignement utilisé dans la requête MQL. Pour plus d'informations sur la relation entre ces valeurs, consultez la section Période d'alignement et durée.

  6. Cliquez sur Ajouter pour enregistrer la condition. Les requêtes de conditions dans les règles d'alerte ne sont pas converties au format strict.

  7. Terminez la configuration de la règle d'alerte.

Créer des règles d'alerte MQL (API)

Si vous utilisez l'API, créez une condition du type MonitoringQueryLanguageCondition lorsque vous configurez la règle. Pour en savoir plus, consultez la section Créer des conditions pour les règles d'alerte.

Transmettez ensuite la règle à alertPolicies.create, comme d'habitude.