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.
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.
Pour sélectionner la statistique absent()
dans la console, voir les instructions propres aux pages présentées ci-dessous.
- Page Créer une alarme ou Modifier l'alarme : En mode de base, sélectionnez absent dans Opérateur sous Règle de déclenchement. En mode avancé (Sélectionnez Passer en mode avancé), mettez à jour l'expression MQL.
- Page Explorateur de mesures : Sélectionnez Mode avancé pour utiliser MQL.
- Page Mesures de service : Ouvrez l'interrogation dans l'explorateur de mesures, puis sélectionnez Mode avancé pour utiliser 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
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.
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.
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 ( 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é ( Par exemple, |
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)
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 ( 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.
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()