Les expressions de règle d'alerte permettent de configurer des conditions d'alerte complexes lors de la création d'une règle. Une expression se compose d'éléments de base tels que les noms de métriques, les opérateurs et les fonctions, et prend en charge la comparaison avec les données historiques.
Éléments
Cloud Monitor évalue les expressions de règle d'alerte par rapport aux données agrégées des métriques ou aux instances individuelles. Si les données de surveillance satisfont à l'expression, une alerte est déclenchée. Une expression comprend des noms de métriques, des membres de métriques, des opérateurs, des fonctions et des données de surveillance. Exemple : @cpu_total[60].$instanceId != 'i-2ze3jvsy7620giru****' && @cpu_total[60].$Average > 60.
-
Noms de métriques
Pour plus d'informations sur les métriques des différents services cloud, consultez la rubrique Annexe 1 : Métriques pour les produits Alibaba Cloud.
Une expression de métrique utilise le format
@Metric name[Aggregation period]. Par exemple, pour surveiller une instance Elastic Compute Service (ECS) à l'aide de la métrique CPUUtilization, utilisez@CPUUtilization[60].RemarqueLa période d'agrégation des métriques ECS s'affiche dans la colonne Min Periods du tableau de la page Metric List page for ECS. Pour afficher la période d'agrégation des métriques d'un autre service cloud, sélectionnez ce service dans la liste déroulante.
Un nom de métrique doit respecter l'expression régulière
[a-zA-Z][_a-zA-Z0-9]*. Si un nom de métrique ne correspond pas à cette expression régulière, utilisez le format@(Metric name)[Aggregation period], par exemple@('vm.DiskIORead')[60].
Combinez les noms de métriques avec des membres de métriques pour spécifier la portée des données de surveillance.
-
Membres de métriques
Les membres de métriques définissent la portée des données de surveillance pour une métrique. Un membre de métrique doit commencer par un signe dollar ($). Utilisez le format
@Metric name[Aggregation period].$Metric member. Par exemple, les méthodes statistiques disponibles pour la métrique CPUUtilization d'ECS sont Average, Minimum et Maximum. L'expression correspondant à la valeur moyenne est@CPUUtilization[60].$Average. Les dimensions de la métrique CPUUtilization d'ECS sontuserIdetinstanceId. L'expression pour une instance spécifique est@CPUUtilization[60].$instanceId.RemarqueLes membres des métriques ECS s'affichent dans les colonnes Dimensions et Statistics du tableau de la page Metric List page for ECS. Pour afficher les membres des métriques d'un autre service cloud, sélectionnez ce service dans la liste déroulante.
-
Opérateurs
Les opérateurs déterminent si les données de surveillance satisfont à la condition d'alerte.
-
Opérateurs de base
Catégorie
Opérateur et description
Opérateurs mathématiques
-
+: addition -
-: soustraction -
*: multiplication -
/: division -
%: modulo -
**: exponentiation
Opérateurs de comparaison
-
==: égal à -
! =: différent de -
>: supérieur à -
>=: supérieur ou égal à -
<: inférieur à -
<=: inférieur ou égal à
Opérateurs logiques
-
&&ouand: ET -
||ouor: OU -
!ounot: NON
Exemple :
$Average > 50 && $instanceId != 'i-not-exist'.RemarqueSi les valeurs de part et d'autre d'un opérateur mathématique ou de comparaison ne sont pas du même type, la chaîne est convertie en nombre. Par exemple :
'123' + 321 == 123 + '321' == 444. -
-
Opérateurs de chaîne
Opérateur de chaîne
Description
Exemple
matches
Correspond à une expression régulière.
Utilisez l'opérateur logique NOT avec
matchespour inverser la correspondance d'une expression régulière.!("hello" matches "^fo.+")RemarqueL'opérateur
!a une priorité supérieure à celle de l'opérateur matches. Vous devez donc placer l'expression régulière entre parenthèses ().contains
Contient une chaîne.
'abcdef' contains 'cde'startsWith
Vérifie si une chaîne commence par un préfixe spécifié.
'abcdef' startsWith 'abc'endsWith
Vérifie si une chaîne se termine par un suffixe spécifié.
'abcdef' endsWith 'def' -
Opérateurs d'appartenance
Opérateur d'appartenance
Description
Exemple
in
Contient
-
userld in [120886317861****, 425876]La valeur de
userldest120886317861**ou20654616023382**. -
"foo" in {'foo':1, 'bar':2}La valeur de foo est
foooubar.
not in
Ne contient pas
-
userld not in [120886317861****, 425876]La valeur de
userldn'est ni120886317861**ni20654616023382**. -
"foo" not in {'foo1':1, 'bar':2}La valeur de foo n'est ni
foo1nibar.
-
-
Opérateurs ternaires
?:: Fonctionne comme l'opérateur ternaire en C et Java. Par exemple : @CPUUtilization[60].$Average > 30? "ok": "lower".
-
-
Opérations sur les données
-
Types de données
Type de données
Description
Exemple
string
Chaîne entourée de guillemets simples ou doubles.
"hello", 'hello'number
Nombre entier ou à virgule flottante.
RemarquePour les entiers, vous pouvez utiliser des traits de soulignement (_) comme séparateurs afin d'améliorer la lisibilité.
-
103, 2,5, .5, 2e+6 -
1_000_000
array
Tableau.
[1, 2, 3]map ou dict
Dictionnaire.
{"foo":"bar"}bool
Valeur booléenne.
trueoufalsenil
Valeur vide.
nil -
-
Fonctions intégrées
Fonction intégrée
Description
`len(arraymap
string)`
Renvoie la longueur d'un tableau, d'un map ou d'une chaîne.
now()Renvoie un horodatage UTC en millisecondes.
abs(number)Renvoie la valeur absolue (un nombre à virgule flottante).
rand()Renvoie un nombre à virgule flottante compris entre
[0, 1).rand(N)Renvoie un nombre à virgule flottante compris entre
[0, N).toLower(string)Convertit une chaîne en minuscules.
toUpper(string)Convertit une chaîne en majuscules.
-
Comparaison
RemarqueExemple de métrique :
@cpu_total[60].Une méthode d'agrégation est une chaîne. Exemple :
'$Average'.Le résultat de la comparaison est une valeur booléenne. Si la valeur de la métrique de la période actuelle est supérieure à celle de la période précédente, le résultat de la comparaison est
true. Si la valeur de la métrique de la période actuelle est inférieure à celle de la période précédente, le résultat de la comparaison estfalse.
Fonction
Description
CompareLastPeriod(metric, aggregation method, comparison result)Renvoie le pourcentage de variation par rapport à la période précédente. Exemple :
CompareLastPeriod(@cpu_total[60], '$Average', true).Par exemple, si la valeur moyenne de cpu_total est de 20 % pendant la période actuelle et de 15 % pendant la période précédente, la valeur renvoyée dépend du résultat de la comparaison.
-
Si le résultat de la comparaison est
true, cette fonction renvoie (20 - 15) × 100/20. -
Si le résultat de la comparaison est
false, cette fonction renvoie (15 - 20) × 100/20.
CompareLastHour(metric, aggregation method, comparison result)Renvoie le pourcentage de variation par rapport à l'heure précédente.
CompareLastHour(@cpu_total[60], '$Average', true) > 10: Une alerte est déclenchée si la valeur moyenne de cpu_total augmente de 10 % par rapport à hier.CompareLastWeek(metric, aggregation method, comparison result)Obtient les données comparées à celles d'hier.
CompareYesterday(@cpu_total[60], '$Average', true) > 10: Une alerte est déclenchée si la valeur moyenne de cpu_total augmente de 10 % par rapport à la semaine précédente.CompareLastWeek(metric, aggregation method, comparison result)Obtient les données comparées à celles de la semaine précédente.
CompareLastWeek(@cpu_total[60], '$Average', true) > 10: Une alerte est déclenchée si la valeur moyenne de cpu_total augmente de 10 % par rapport à la semaine précédente.ComparePast(metric, aggregation method, comparison result, seconds)Renvoie le pourcentage de variation par rapport au nombre de
secondsspécifié avant l'heure actuelle.Les quatre fonctions précédentes sont des formes simplifiées de cette fonction.
-
CompareLastHour(@cpu_total[60], '$Average', true)est équivalent àComparePast(@cpu_total[60], '$Average', true, 3600). -
CompareYesterday(@cpu_total[60], '$Average', true)est équivalent àComparePast(@cpu_total[60], '$Average', true, 246060). -
CompareLastWeek(@cpu_total[60], '$Average', true)est équivalent àComparePast(@cpu_total[60], '$Average', true, 72460*60).
-
Fonctions historiques
Fonction
Description
LastPeriod(metric)Renvoie les données de la période précédente. Exemple :
LastPeriod(@cpu_total[60]).$Average > 75. Une alerte est déclenchée si la valeur moyenne decpu_totaldépasse 75 % lors de la période précédente.LastHour(metric)Renvoie les données de l'heure précédente. Exemple :
LastHour(@cpu_total[60]).$Average > 75. Une alerte est déclenchée si la valeur moyenne decpu_totaldépasse 75 % lors de l'heure précédente.Yesterday(metric)Renvoie les données du jour précédent. Exemple :
Yesterday(@cpu_total[60]).$Average > 75. Une alerte est déclenchée si la valeur moyenne decpu_totaldépasse 75 % la veille.LastWeek(metric)Renvoie les données de la semaine précédente. Exemple :
LastWeek(@cpu_total[60]).$Average > 75. Une alerte est déclenchée si la valeur moyenne decpu_totaldépasse 75 % lors de la semaine précédente.Past(metric, seconds)Renvoie les données datant du nombre de secondes spécifié avant l'heure actuelle. Ce nombre doit être un multiple entier de la période d'agrégation de la métrique. Les fonctions précédentes sont des abréviations de cette fonction. Par exemple,
Past(@cpu_total[60], 3600) > 75est équivalent àLastHour(@cpu_total[60]).$Average > 75.
-
Scénarios
Le tableau suivant répertorie les scénarios courants pour les expressions de règle d'alerte.
|
Scénario |
Expression de règle d'alerte |
Description |
|
Définir un seuil dédié pour une instance spécifique et un seuil différent pour les autres instances |
|
Une alerte est déclenchée pour l'instance |
|
Exclure une instance spécifique de l'alerte |
|
Pour l'instance |
|
Définir une condition d'alerte basée sur plusieurs métriques |
|
Une alerte est déclenchée si la valeur moyenne de cpu_total pour une instance dépasse 50 % et si la valeur moyenne de memory_usage pour cette instance dépasse 80 %. |
|
Surveiller la latence de reporting des métriques |
|
Une alerte est déclenchée si le délai d'expiration du signal heartbeat dépasse une minute. Remarque
Le paramètre reportTime indique quand une métrique a été signalée. Il s'agit d'un paramètre intégré de chaque métrique. La fonction |