Informations de référence sur MQL (Monitoring Query Language)

Familiarisez-vous avec la syntaxe des expressions MQL (Monitoring Query Language) et vérifiez les valeurs valides pour les opérateurs d'intervalle, de statistique et de prédicat dans les expressions MQL.

Pour plus d'informations sur la modification de MQL, voir Modification de l'expression MQL pour une interrogation. Pour extraire un intervalle de temps spécifique, tel que la dernière heure, voir Sélection d'un intervalle de temps autre que par défaut pour une interrogation.

Syntaxe MQL

La syntaxe MQL régit les expressions d'interrogation des mesures publiées dans le service Surveillance. Les expressions MQL définissent des interrogations (y compris des interrogations d'alarme). MQL agit sur les données agrégées.

Le diagramme suivant présente les composants requis et les composants facultatifs courants.

Note

Certains composants peuvent apparaître plusieurs fois dans une expression MQL. Par exemple, vous pouvez utiliser deux fonctions de regroupement (comme dans groupBy(), suivies d'une statistique, suivie de grouping()). Vous pouvez également imbriquer des interrogations.

Vous pouvez également joindre plusieurs interrogations en une seule interrogation.

Pour les alarmes dans la console, la statistique absent() est listée sous Opérateur. Voir Création d'une alarme d'absence.

Informations supplémentaires sur absent() dans la console

Pour sélectionner la statistique absent() dans la console, voir les instructions propres aux pages présentées ci-dessous.

Expression MQL.

Pour plus d'informations sur la lecture des diagrammes syntaxiques, voir Lecture des diagrammes syntaxiques.

Valeurs valides pour les expressions MQL

Vérifiez les valeurs valides pour les opérateurs d'intervalle, de statistique et de prédicat dans les expressions MQL.

Intervalle

Note

En plus de l'intervalle, tenez compte de la résolution et de l'intervalle de temps.

Les valeurs prises en charge pour l'intervalle dépendent de l'intervalle de temps spécifié dans l'interrogation de mesure (sans objet pour les interrogations d'alarme). Le nombre de valeurs prises en charge est plus élevé pour les petits intervalles de temps. Par exemple, si vous sélectionnez une heure comme intervalle de temps, toutes les valeurs d'intervalle sont prises en charge. Si vous sélectionnez 90 jours pour l'intervalle de temps, seules les valeurs d'intervalle comprises entre 1 heure et 1 jour sont prises en charge.

Sélectionnez un intervalle d'alarme en fonction de la fréquence à laquelle la mesure est émise. Par exemple, une mesure envoyée toutes les cinq minutes nécessite un intervalle d'alarme de 5 minutes ou plus. La plupart des mesures sont émises toutes les minutes, ce qui signifie que la plupart des mesures prennent en charge tout intervalle d'alarme. Pour déterminer les intervalles d'alarme valides pour une mesure spécifique, vérifiez la référence de mesure du service pertinent.

Exemple : Intervalle d'une minute (1m)
CpuUtilization[1m].mean()

Les intervalles valides pour les expressions MQL : 1m-60m, 1h-24h, 1d

Pour obtenir des instructions, voir Sélection de l'intervalle pour une interrogation.

Note

Pour les interrogations de mesure, l'intervalle sélectionné détermine la résolution par défaut de la demande, qui détermine l'intervalle de temps maximal des données retournées.

Pour les interrogations d'alarme, l'intervalle indiqué n'a aucun effet sur la résolution de la demande. La seule valeur valide de la résolution d'une demande d'interrogation d'alarme est 1m. Pour plus d'informations sur le paramètre de résolution tel qu'utilisé dans les interrogations d'alarme, voir Alarme.

Intervalle de temps maximum retourné pour une interrogation

L'intervalle de temps maximum retourné pour une interrogation de mesure dépend de la résolution. Par défaut, pour des interrogations de mesure, la résolution est identique à l'intervalle d'interrogation.

L'intervalle de temps maximum est calculé à l'aide de l'heure courante, peu importe l'heure de fin spécifiée. Ci-dessous se trouvent les intervalles de temps maximum retournés pour chaque sélection d'intervalle disponible dans la console (mode de base).

Intervalle Résolution par défaut (interrogations de mesure) Intervalle de temps maximum retourné

1 minute

Auto (page Mesures de service)*, lorsque la période sélectionnée est inférieure ou égale à 6 heures

1 minute 7 jours

5 minutes

Auto (page Mesures de service)*, lorsque la période sélectionnée est supérieure à 6 heures et inférieure à 36 heures

5 minutes 30 jours

1 heure

Auto (page Mesures de service)*, lorsque la période sélectionnée est supérieure à 36 heures

1 heure 90 jours

1 jour

1 jour 90 jours

* L'intervalle de temps maximal retourné lorsque l'option Auto est sélectionnée pour Intervalle (page Mesures de serviceseulement) est déterminé par la sélection automatique d'intervalle. La sélection automatique de l'intervalle est basée sur la période sélectionnée.

Pour spécifier une résolution non par défaut qui diffère de l'intervalle, voir Sélection d'une résolution non par défaut pour une interrogation.

Exemple 1 pour les données retournées
Intervalle d'une minute et résolution jusqu'à l'heure courante, envoi à 10:00 le 8 janvier. Ni la résolution ni l'heure de fin n'étant indiquée, la résolution utilisée par défaut est la valeur d'intervalle 1m et l'heure de fin par défaut est l'heure courante (2023-01-08T10:00:00.789Z). Cette demande retourne des points de données de mesure pour un maximum de 7 jours. Le premier point de données possible dans cette période de sept jours est 10:00 le 1er janvier (2023-01-01T10:00:00.789Z).
Exemple 2 pour les données retournées
Intervalle de cinq minutes avec une résolution d'une minute il y a jusqu'à deux jours, envoyé à 10h00 le 8 janvier. Puisque la résolution entraîne l'intervalle de temps maximum, des points de données de mesure pour un maximum de 7 jours sont retournés. Bien que l'heure de fin précisée soit 10:00 le 6 janvier (2023-01-06T10:00:00.789Z), le premier point de données possible dans cette période de sept jours est 10:00 le 1er janvier (2023-01-01T10:00:00.789Z). Par conséquent, des points de données de mesure pour seulement 5 jours peuvent être retournés dans cet exemple.

Statistique

La statistique est la fonction d'agrégation appliquée au jeu de points de données bruts à l'intervalle spécifié.

Exemple : Statistique moyenne
CpuUtilization[1m].mean()

Pour obtenir des instructions, voir Sélection de la statistique pour une interrogation.

Les statistiques valides sont les suivantes :

Statistique (expression MQL) Option Statistique (mode de base dans la console) Description
absent() (Voir l'opérateur absent)

Prédicat d'absence.

Retourne Vrai (1) si la mesure est absente pendant tout l'intervalle.

Retourne Faux (0) si la mesure est présente pendant l'intervalle.

Est ignoré après la période de détection d'absence, sans générer de valeur.

La période de détection d'absence par défaut est de deux heures. Vous pouvez personnaliser cette période lors de la création ou de la mise à jour d'une alarme d'absence. Voir Personnalisation de la période de détection d'absence pour une interrogation d'alarme.

Les valeurs valides vont d'une minute (1m) à trois jours (3d ou 72h). Spécifiez la durée de la période de détection des absences à l'aide d'un nombre et d'une unité (m, h ou d pour les minutes, les heures ou le jour).

Utilisez cette statistique dans les interrogations de base ainsi que dans les alarmes d'absence. Voir Spécification d'un prédicat dans une interrogation.

avg() (non disponible) Retourne la valeur de Sum divisée par Count pendant l'intervalle spécifié. Identique à mean().
count() Nombre Retourne le nombre d'observations reçues pendant l'intervalle spécifié.
first() (non disponible) Pour chaque intervalle, retourne la valeur avec l'horodatage le plus ancien pendant l'intervalle spécifié.
increment() (non disponible) Retourne la modification par intervalle.
last() (non disponible) Pour chaque intervalle, retourne la valeur avec l'horodatage le plus récent pendant l'intervalle spécifié.
max() Max. Retourne la valeur la plus élevée observée pendant l'intervalle spécifié.
mean() Moyenne Retourne la valeur de Sum divisée par Count pendant l'intervalle spécifié.
min() Min. Retourne la valeur la plus faible observée pendant l'intervalle spécifié.
percentile(p)

P50

P90

P95

P99

P99.9 (page Mesures de service uniquement)

Retourne la valeur estimative du centile spécifié (p lors de l'utilisation de la trousse SDK, de l'interface de ligne de commande ou de l'API) pendant l'intervalle spécifié. Les valeurs valides sont supérieures à 0,0 et inférieures à 1,0.

Par exemple, percentile(0.8) retourne la valeur du 80e centile.

rate() Taux Retourne le taux moyen de modification par intervalle. L'unité est le nombre par seconde.
sum() Somme Retourne toutes les valeurs ajoutées ensemble, par intervalle.

Opérateurs de prédicat

Le composant de prédicat conserve uniquement les valeurs spécifiées des flux de mesure. Utilisez un opérateur de prédicat pour définir un seuil ou une absence.

Exemple 1 : Supérieur à 80 % pour l'utilisation moyenne d'UC
CpuUtilization[1m].mean() > 80
Exemple 2 : Entre 60 et 80 % pour l'utilisation moyenne d'UC
CpuUtilization[1m].mean() in (60, 80)
Exemple 3 : Supérieur à 1 pour les erreurs
ServiceConnectorHubErrors[1m].count() > 1
Exemple 4 : Supérieur à 85 pour l'utilisation d'UC du 90e centile (Sélection d'un domaine de disponibilité et regroupement par groupe)
CpuUtilization[1m]{availabilityDomain = "VeBZ:PHX-AD-1"}.groupBy(poolId).percentile(0.9) > 85
Exemple 5 : Au moins 20 pour l'utilisation minimale d'UC (Sélectionnant "ol8" ou "ol7")
CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20
Exemple 6 : Au moins 30 pour l'utilisation minimale d'UC (sélection des noms d'instance commençant par "instance-2023-")
CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30
Exemple 7 : Absence des mesures d'utilisation d'UC pour la ressource spécifiée, réglée à 20 heures pour la période de détection des absences
CpuUtilization[1m]{resourceId = "<resource_identifier>"}.groupBy(resourceId).absent(20)
Description pour absent() : Retourne Vrai (1) si la mesure est absente pendant tout l'intervalle. Retourne Faux (0) si la mesure est présente pendant l'intervalle. Est ignoré après la période de détection d'absence, sans générer de valeur.

Pour obtenir des instructions, voir Spécification d'un prédicat dans une interrogation.

Les opérateurs valides sont les suivants.

Opérateur (expression MQL) Option Opérateur (mode de base dans la console) Commentaires
> supérieur à
>= supérieur ou égal à
== égal à
=~ (non disponible) Mise en correspondance floue.
!= (non disponible) Différent de.
< inférieur à
<= inférieur ou égal à
in entre (y compris les valeurs spécifiées) Inclusion des deux valeurs spécifiées.
not in en dehors de (y compris les valeurs spécifiées) Inclusion des deux valeurs spécifiées.
(Voir la statistique absent()) absent

Prédicat d'absence.

Retourne Vrai (1) si la mesure est absente pendant tout l'intervalle.

Retourne Faux (0) si la mesure est présente pendant l'intervalle.

Est ignoré après la période de détection d'absence, sans générer de valeur.

La période de détection d'absence par défaut est de deux heures. Vous pouvez personnaliser cette période lors de la création ou de la mise à jour d'une alarme d'absence. Voir Personnalisation de la période de détection d'absence pour une interrogation d'alarme.

Les valeurs valides vont d'une minute (1m) à trois jours (3d ou 72h). Spécifiez la durée de la période de détection des absences à l'aide d'un nombre et d'une unité (m, h ou d pour les minutes, les heures ou le jour).

Utilisez cette statistique dans les interrogations de base ainsi que dans les alarmes d'absence. Voir Spécification d'un prédicat dans une interrogation.

Pour les instructions concernant les alarmes, voir Création d'une alarme de seuil et Création d'une alarme d'absence.

Opérateurs arithmétiques

Les opérateurs arithmétiques suivants sont pris en charge dans les expressions MQL.

Utilisateur Description
+ Ajouter
- Soustraction
* Multiplier
/ Divide
% Modulo (diviser et retourner le reste)

Exemple 1 : Calculer le pourcentage disponible d'utilisation d'UC (mesure CPUUtilization dans l'espace de noms oci_computeagent).

100 - CpuUtilization[1m].mean()

Exemple 2 : Calculer la valeur en secondes, au lieu de l'unité par défaut de la mesure en millisecondes (mesure TotalRequestLatency dans l'espace de noms oci_objectstorage)

TotalRequestLatency[1m].mean() / 1000

Joindre des interrogations

Utilisez les opérateurs && (AND) et || (OR) pour joindre des interrogations. Plusieurs interrogations jointes agissent comme une seule interrogation.

Note

Les opérateurs && (AND) et || (OR) ne peuvent être utilisés qu'entre des interrogations. Ne les utilisez pas entre les jeux de dimensions. Par exemple, l'interrogation suivante n'est pas valide : CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2" || resourceDisplayName = "test"}.mean()
Opérateur de jointure Description
&& AND : Joindre des interrogations. Retourne Vrai si les deux opérateurs sont vrais. Renvoie la valeur false dans le cas contraire.
|| OR : Joindre des interrogations. Retourne Vrai si l'un ou l'autre est vrai, ou si les deux sont vrais. Renvoie la valeur false dans le cas contraire.

Exemple 1 : Joindre des interrogations avec OR. Retourne Vrai si le point de données d'utilisation d'UC se trouve dans le domaine d'erreur 1 ou 2 OU si le point de données d'utilisation de mémoire se trouve dans le domaine d'erreur 1 ou 2.

CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean() || MemoryUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean()

Exemple 2 : Joindre des interrogations d'alarme avec AND. Déclenchez l'alarme (transition à l'état de déclenchement) uniquement lorsque les deux interrogations sont vraies : au moins une erreur existe ET l'erreur moyenne est supérieure à la moitié.

ServiceConnectorHubErrors[1m].count() > 1 && ServiceConnectorHubErrors[1m].mean() > 0.5

Exemple 3 : Joindre des interrogations d'alarme avec AND. Déclenchez l'alarme (de passage à l'état de déclenchement) uniquement lorsque les deux interrogations sont vraies : Pour les lectures plus petites (de 0 à 8 kilooctets), le 50e centile des demandes dépasse 100 ET la latence moyenne est inférieure à 0,01.

FileSystemReadRequestsBySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.percentile(.50) > 100 && FileSystemReadAverageLatencybySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.mean() > 0.01

Mise en correspondance floue

Spécifiez les correspondances approximatives ("floues") avec les valeurs de dimension dans une expression MQL.

Utilisez la mise en correspondance floue lorsque vous spécifiez plusieurs valeurs pour un nom de dimension.

Au lieu du signe égal (=) avant le jeu de valeurs, utilisez l'opérateur de comparaison suivant.

Opérateur de comparaison Description
=~ (signe égal suivi d'un tilde) Approximativement égal à. Utiliser pour les correspondances nulles

Pour une mise en correspondance floue, encadrez le jeu de valeurs par des citations : name = "val*" ou name = "value1|value2"

Mettez à jour le jeu de valeurs à l'aide d'au moins un des caractères suivants.

Caractère de correspondance floue pour les valeurs Description
* (astérisque) Caractère générique indiquant zéro à plusieurs caractères.
|(barre verticale) Opérande OR pour les valeurs de dimension.

Exemple montrant une correspondance floue pour deux noms de ressource possibles ("ol8" ou "ol7") :

CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20

Exemple montrant une correspondance floue pour les noms de ressource contenant l'expression "instance-2023-" :

CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30

Exemple d'affichage d'une mise en correspondance floue pour trois jeux de valeurs de dimension (test des instances de calcul dans le domaine d'erreur 1 qui utilisent la forme myshape) :

CpuUtilization [1m]{faultDomain =~ "FAULT-DOMAIN-1", resourceDisplayName =~ "test*", shape =~ "myshape"}.mean()