Dans une règle d'alerte, les expressions d'évaluation déterminent si la condition de déclenchement d'une alerte est remplie et évaluent sa gravité dynamique.
Présentation
Les résultats des instructions de requête servent d'entrée ; les champs issus des résultats d'opérations ensemblistes sont utilisés comme variables. Si l'expression d'évaluation renvoie true, le système déclenche une alerte.
Limites
Les expressions d'évaluation dans les règles d'alerte sont soumises aux limites suivantes :
Entourez les nombres négatifs de parenthèses (). Exemple :
x+(-100)<100.Le système convertit les valeurs numériques en nombres à virgule flottante 64 bits. Des erreurs peuvent survenir lors de comparaisons, notamment les vérifications d'égalité.
Les noms de variables ne doivent contenir que des lettres et des chiffres, et commencer par une lettre.
Une expression d'évaluation doit comporter entre 1 et 128 caractères.
Le système ne déclenche une alerte que si l'expression d'évaluation renvoie
trueet que le nombre de fois consécutives où la condition de déclenchement est satisfaite atteint la valeur du paramètre Seuil de déclenchements continus. Par exemple, si une expression d'évaluation est100+100, le résultat du calcul est 200, ce qui ne correspond pas à la valeurtrue. Dans ce cas, aucune alerte n'est déclenchée.true,false, le signe dollar ($) et le point (.) sont des mots réservés pour les expressions d'évaluation. Vous ne pouvez pas utiliser ces mots réservés comme variables.
Syntaxe
Le tableau suivant décrit les types de syntaxe pris en charge par les expressions d'évaluation.
Les noms de champs font référence aux champs renvoyés dans un ensemble de résultats. Utilisez des chaînes de caractères comme noms de champs. Évitez les noms de champs composés uniquement de chiffres ou de caractères spéciaux tels que le signe pourcentage (%). Si un nom de champ contient des caractères spéciaux ou uniquement des chiffres, placez-le entre crochets []. Exemples :
[5xx percentage (%)] > 20[404] > 20
|
Type de syntaxe |
Opérateur |
Méthode d'opération |
Exemple |
||
|
Opération entre variables |
Opération entre une constante non chaîne et une variable |
Opération entre une constante chaîne et une variable |
|||
|
Opérateurs arithmétiques |
addition (+), soustraction (-), multiplication (*), division (/) et modulo (%) |
Avant l'application d'un opérateur arithmétique, le système convertit les opérandes gauche et droite en nombres à virgule flottante 64 bits. |
Avant l'application d'un opérateur arithmétique, le système convertit les opérandes gauche et droite en nombres à virgule flottante 64 bits. |
Non pris en charge. |
|
|
Opérateurs de comparaison |
Opérateurs de comparaison : supérieur à (>), supérieur ou égal à (>=), inférieur à (<), inférieur ou égal à (<=), égal à (==) et différent de (!=) |
Simple Log Service applique les règles de comparaison suivantes par ordre de priorité :
|
Le système convertit les opérandes gauche et droite en nombres à virgule flottante 64 bits, puis les compare. |
Le système convertit les opérandes gauche et droite en chaînes de caractères, puis les compare selon l'ordre alphabétique. |
|
|
Opérateurs d'expression régulière : correspondance d'expression régulière (=~) et non-correspondance d'expression régulière (!~) Remarque
|
Avant l'application d'un opérateur d'expression régulière, le système convertit les opérandes gauche et droite en chaînes de caractères. |
Non pris en charge. |
Avant l'application d'un opérateur d'expression régulière, le système convertit les opérandes gauche et droite en chaînes de caractères. |
Correspondance d'expression régulière : |
|
|
Opérateurs logiques |
Opérateurs logiques : AND (&&) et OR (||) |
Les opérandes gauche et droite doivent être des sous-expressions, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est |
Les opérandes gauche et droite doivent être des sous-expressions, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est |
Les opérandes gauche et droite doivent être des sous-expressions, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est |
|
|
Opérateur NOT |
Opérateur NOT (!) |
L'opérande requis doit être une sous-expression, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est Vous ne pouvez pas utiliser directement cet opérateur sur les champs présents dans les résultats d'opérations ensemblistes. |
L'opérande requis doit être une sous-expression, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est Vous ne pouvez pas utiliser directement cet opérateur sur les champs présents dans les résultats d'opérations ensemblistes. |
L'opérande requis doit être une sous-expression, et le résultat de l'opération doit être une valeur booléenne. Par exemple, l'expression d'évaluation est Vous ne pouvez pas utiliser directement cet opérateur sur les champs présents dans les résultats d'opérations ensemblistes. |
|
|
Fonction contains |
Fonction contains |
Avant l'exécution de la fonction contains, le système convertit les opérandes gauche et droite en chaînes de caractères. |
Non pris en charge. |
Avant l'exécution de la fonction contains, le système convertit les opérandes gauche et droite en chaînes de caractères. |
|
|
Parenthèses |
Parenthèses () |
Les parenthèses () permettent de modifier l'ordre de priorité standard des calculs. |
Les parenthèses () permettent de modifier l'ordre de priorité standard des calculs. |
Les parenthèses () permettent de modifier l'ordre de priorité standard des calculs. |
|
Évaluer les résultats d'opérations ensemblistes
Simple Log Service prend en charge la surveillance associée pour jusqu'à trois ensembles de données et évalue les résultats d'opérations ensemblistes.
Résultats d'opérations ensemblistes
Les résultats des instructions de requête servent d'entrée, et les champs issus des résultats d'opérations ensemblistes servent de variables pour évaluer s'il convient de déclencher une alerte. Pour plus d'informations sur les opérations ensemblistes, consultez la rubrique Corrélation de plusieurs résultats d'analyse de requêtes. Le tableau suivant décrit les résultats d'opérations ensemblistes.
Des opérations ensemblistes telles que CROSS JOIN et LEFT JOIN sont effectuées sur les résultats de requête et d'analyse.
Si les résultats de requête et d'analyse ne contiennent pas de champs en double, vous pouvez référencer les champs dans une expression d'évaluation sans ajouter de préfixes. Les préfixes incluent $0, $1 et $2. Exemple :
name == 'sls'.Si les résultats de requête et d'analyse contiennent des champs en double, vous pouvez référencer les champs dans une expression d'évaluation en ajoutant des préfixes. Les préfixes incluent $0, $1 et $2. Exemple :
$0.name == 'sls' || $1.name == 'ecs'.
|
Catégorie |
Sous-catégorie |
Description |
|
Journal |
Une instruction de requête ne contenant pas SELECT |
Seule une instruction de recherche est utilisée pour interroger les journaux. Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs contenus dans les résultats de la requête. |
|
Une instruction de requête contenant SELECT * FROM log |
Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs pour lesquels l'option Activer l'analyse est activée. |
|
|
Une instruction de requête contenant SELECT * FROM (SELECT...) |
Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs contenus dans la sous-requête SELECT spécifiée. |
|
|
Métrique |
Une instruction de requête contenant SELECT promql(...) |
Les fonctions promql_query(string) et promql_query_range(string, string) peuvent toujours renvoyer les champs suivants : metric, labels, time et value. Simple Log Service développe le champ labels au format map. Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs suivants : metric, labels, time et value. Vous pouvez également référencer les sous-champs du champ labels. |
|
Une instruction de requête contenant SELECT a, b FROM (SELECT promql(...)) |
Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs pour lesquels l'option Activer l'analyse est activée. |
|
|
Une instruction de requête contenant SELECT * FROM log |
Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer les champs pour lesquels l'option Activer l'analyse est activée. |
|
|
Données de ressource |
Aucun |
La valeur d'un champ dans les données de ressource peut être de type chaîne, nombre à virgule flottante ou numérique. Le type JSON n'est pas pris en charge. Lorsque vous spécifiez une expression d'évaluation pour une condition de déclenchement, vous pouvez référencer l'ID d'un champ dans les données de ressource. |
Configurer une condition de déclenchement
L'expression d'évaluation évalue les résultats d'opérations ensemblistes. Si elle renvoie true, le système déclenche une alerte. Les types de conditions de déclenchement suivants sont pris en charge :
-
Des données sont renvoyées : Vérifie le nombre de lignes dans le résultat de l'opération ensembliste. La condition est remplie si au moins une ligne est renvoyée.

-
Le résultat de la requête contient : Vérifie le nombre de lignes dans le résultat de l'opération ensembliste. Les opérateurs pris en charge incluent supérieur à, inférieur à et égal à. La condition est remplie si le nombre de lignes satisfait la condition spécifiée. Par exemple, si l'ensemble de résultats contient 4 lignes et que la condition de déclenchement est Le résultat de la requête contient > 10, la condition n'est pas remplie et aucune alerte n'est générée.

-
Les données correspondent à l'expression : Vérifie le contenu des lignes dans le résultat de l'opération ensembliste. La condition est remplie si le contenu d'au moins une ligne correspond à l'expression d'évaluation. Par exemple, si l'ensemble de résultats contient une ligne (pv=900) et que la condition de déclenchement est Les données correspondent à l'expression, pv > 1000, la condition n'est pas remplie et aucune alerte n'est générée.

-
Le résultat de la requête contient et correspond : Vérifie à la fois le nombre et le contenu des lignes dans le résultat de l'opération ensembliste. Une alerte est déclenchée uniquement lorsqu'un nombre spécifique de lignes correspond à l'expression d'évaluation. Par exemple, si l'ensemble de résultats comporte quatre lignes (pv=900, pv=1100, pv=1200, pv=1001) et que la condition de déclenchement est Le résultat de la requête contient et correspond > 3, pv > 1000, la condition est remplie et une alerte est générée.

Exemples
Exemple 1
Si le taux de réussite des requêtes est inférieur à 90 % et que le temps de réponse moyen des requêtes est supérieur à 60 secondes sur une période de 15 minutes, une alerte est déclenchée. Détails de la configuration :
Statistiques de requête :
s0 : Calculez le taux de réussite des requêtes, indiqué par
success_ratio. Instruction de requête :* | select round(sum(if(status < 300, 1, 0)) * 100.0 / count(1) , 2) as success_ratio.s1 : Calculez le temps de réponse moyen des requêtes par minute. Instruction de requête :
* | select date_format(date_trunc('minute',__time__), '%m-%d %H:%i') as t,avg(request_time) as "Average response time(s)" group by t order by t asc limit 2000
Trigger Condition : L'expression d'évaluation est configurée comme suit : $0.success_ratio < 90 && $1.[Average response time(s)] > 60

Exemple 2
Si le nombre de fois où le code d'état HTTP 500 est renvoyé dépasse 10 sur une période de 15 minutes, une alerte est déclenchée. Détails de la configuration :
Statistiques de requête : Comptez les occurrences de chaque code d'état. Instruction de requête : * | select status, COUNT(*) as total group by status
Trigger Condition : L'expression d'évaluation est configurée comme suit : status == 500 && total > 10
