Écrire des requêtes d'expression - Amazon Managed Grafana

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Écrire des requêtes d'expression

Cette rubrique de documentation est conçue pour les espaces de travail Grafana compatibles avec la version 9.x de Grafana.

Pour les espaces de travail Grafana compatibles avec la version 10.x de Grafana, voir. Travailler dans la version 10 de Grafana

Pour les espaces de travail Grafana compatibles avec la version 8.x de Grafana, voir. Travailler dans la version 8 de Grafana

Les expressions côté serveur vous permettent de manipuler les données renvoyées par des requêtes à l'aide d'opérations mathématiques ou autres. Les expressions créent de nouvelles données et ne manipulent pas les données renvoyées par les sources de données.

À propos des expressions

Les expressions côté serveur vous permettent de manipuler les données renvoyées par des requêtes à l'aide d'opérations mathématiques ou autres. Les expressions créent de nouvelles données et ne manipulent pas les données renvoyées par les sources de données, à l'exception de quelques restructurations mineures des données afin de rendre les données acceptables en entrée pour les expressions.

Utilisation d'expressions

Les expressions sont principalement utilisées par Grafana Alerting. Le traitement est effectué côté serveur, de sorte que les expressions peuvent fonctionner sans session de navigateur. Toutefois, les expressions peuvent également être utilisées avec les sources de données principales et la visualisation.

Note

Les expressions ne fonctionnent pas avec les anciennes alertes de tableau de bord.

Les expressions sont destinées à augmenter les sources de données en permettant de combiner des requêtes provenant de différentes sources de données ou en fournissant des opérations non disponibles dans une source de données.

Note

Dans la mesure du possible, vous devez effectuer le traitement des données dans la source de données. Copier des données depuis le stockage vers le serveur Grafana à des fins de traitement est inefficace. Les expressions sont donc destinées au traitement léger des données.

Les expressions fonctionnent avec des requêtes de source de données qui renvoient des séries chronologiques ou des données numériques. Ils fonctionnent également sur des données multidimensionnelles. Par exemple, une requête qui renvoie plusieurs séries, chaque série étant identifiée par des étiquettes ou des balises.

Une expression individuelle prend une ou plusieurs requêtes ou autres expressions en entrée et ajoute des données au résultat. Chaque expression ou requête individuelle est représentée par une variable qui est un identifiant nommé appelé RefID (par exemple, la lettre par défaut A ouB).

Pour référencer le résultat d'une expression individuelle ou d'une requête de source de données dans une autre expression, cet identifiant est utilisé comme variable.

Types d'expressions

Les expressions fonctionnent avec deux types de données.

  • Une collection de séries chronologiques.

  • Une collection de numéros, où chaque numéro est un élément.

Chaque collection est renvoyée à partir d'une seule requête ou expression de source de données et est représentée par le RefID. Chaque collection est un ensemble, chaque élément de l'ensemble étant identifié de manière unique par ses dimensions, qui sont stockées sous forme d'étiquettes ou de paires clé-valeur.

Requêtes sur les sources de données

Les expressions côté serveur prennent uniquement en charge les requêtes de source de données pour les sources de données principales. Les données sont généralement considérées comme des données de séries chronologiques. À l'avenir, nous avions l'intention d'ajouter une assertion des données de type de retour de requête (nombre ou série chronologique) afin que les expressions puissent mieux gérer les erreurs.

Les requêtes de source de données, lorsqu'elles sont utilisées avec des expressions, sont exécutées par le moteur d'expression. Dans ce cas, il restructure les données pour qu'il s'agisse d'une série chronologique ou d'un nombre par trame de données. Ainsi, par exemple, si vous utilisez une source de données qui renvoie plusieurs séries sur un seul cadre dans la vue tabulaire, vous remarquerez peut-être que son apparence est différente lorsqu'elle est exécutée avec des expressions.

Actuellement, le seul format autre que les séries chronologiques (nombre) est pris en charge lors de l'utilisation de trames de données est que vous avez une réponse tabulaire qui renvoie une trame de données sans heure, des colonnes de chaîne et une colonne numérique :

Lock Host (Hôte) Processeur AVG

MIA

A

1

NYC

B

2

L'exemple ci-dessus produira un nombre qui fonctionne avec les expressions. Les colonnes de chaîne deviennent des étiquettes et la colonne numérique la valeur correspondante. Par exemple {"Loc": "MIA", "Host": "A"} avec une valeur de 1.

Opérations

Vous pouvez utiliser les opérations suivantes dans les expressions : mathématiques, réduction et rééchantillonnage.

Math

Les mathématiques concernent les formules mathématiques de forme libre sur des séries chronologiques ou des données numériques. Les opérations mathématiques prennent des nombres et des séries chronologiques en entrée et les transforment en différents nombres et séries chronologiques.

Les données provenant d'autres requêtes ou expressions sont référencées avec le RefID préfixé par un signe dollar, par exemple. $A Si le nom de la variable comporte des espaces, vous pouvez utiliser une syntaxe entre accolades telle que${my variable}.

Les constantes numériques peuvent être exprimées en décimal (2.24), en octal (avec un zéro en tête072) ou en hexadécimal (avec un 0x en tête). 0x2A Les exponentielles et les signes sont également pris en charge (par exemple,-0.8e-2).

Opérateurs

Les opérateurs arithmétiques (+, binaires et unaires-,*,/,%, exposant**), relationnels (,<,,, > ==!=, >=<=) et logiques (, &&||, et unaires!) sont pris en charge.

Le comportement de l'opération avec les données varie selon qu'il s'agit d'un nombre ou d'une série chronologique.

Dans le cas d'opérations binaires, telles que $A + $B ou$A || $B, l'opérateur est appliqué de la manière suivante en fonction du type de données :

  • Si les deux $A et $B sont des nombres, l'opération est effectuée entre les deux nombres.

  • Si l'une des variables est un nombre et l'autre une série chronologique, l'opération entre la valeur de chaque point de la série chronologique et le nombre est effectuée.

  • Si $A les deux $B sont des données de séries chronologiques, l'opération entre chaque valeur des deux séries est effectuée pour chaque horodatage existant dans $A les deux séries$B. L'Resampleopération peut être utilisée pour aligner les horodatages.

Résumé :

  • Numéro OP = numéro

  • Numéro : série OP = série

  • Série OP = série

Comme les expressions fonctionnent avec plusieurs séries ou nombres représentés par une seule variable, les opérations binaires effectuent également une union (jointure) entre les deux variables. Cela se fait sur la base des étiquettes d'identification associées à chaque série ou numéro individuel.

Ainsi, si vous avez des numéros avec des étiquettes comme {host=web01} in $A et un autre numéro $B avec les mêmes étiquettes, l'opération est effectuée entre ces deux éléments au sein de chaque variable, et le résultat partagera les mêmes étiquettes. Les règles de comportement de ce syndicat sont les suivantes :

  • Un article sans étiquette s'associera à quoi que ce soit.

  • Si $A les $B deux ne contiennent qu'un seul article (une série ou un numéro), ils se joindront.

  • Si les étiquettes sont mathématiques exactes, elles se joindront.

  • Si les étiquettes sont un sous-ensemble des autres, par exemple si un élément $A est étiqueté {host=A,dc=MIA} et qu'un élément $B est étiqueté, {host=A} elles se joindront.

  • Si dans une variable, par exemple, $A il existe des clés de balise différentes pour chaque élément, le comportement de jointure n'est pas défini.

Les opérateurs relationnels et logiques renvoient 0 pour faux, 1 pour vrai.

Fonctions mathématiques

Bien que la plupart des fonctions existent dans les propres opérations d'expression, l'opération mathématique comporte certaines fonctions similaires aux opérateurs mathématiques ou aux symboles. Lorsque les fonctions peuvent prendre des nombres ou des séries, le même type que l'argument sera renvoyé. Lorsqu'il s'agit d'une série, l'opération est effectuée pour la valeur de chaque point de la série.

abdos

abs renvoie la valeur absolue de son argument qui peut être un nombre ou une série. Par exemple, abs(-1) ou abs($A).

is_inf

is_inf prend un nombre ou une série et renvoie 1 des Inf valeurs (négatives ou positives) et 0 d'autres valeurs. Par exemple is_inf($A).

Note

Si vous devez vérifier spécifiquement l'infini négatif par exemple, vous pouvez effectuer une comparaison comme$A == infn().

is_nan

is_nan prend un nombre ou une série et renvoie 1 des NaN valeurs et 0 d'autres valeurs. Par exemple is_nan($A). Cette fonction existe parce qu'elle n'NaNest pas égale àNaN.

est_nul

is_null prend un nombre ou une série et renvoie 1 des null valeurs et 0 d'autres valeurs. Par exemple is_null($A).

is_number

is_number prend un nombre ou une série et renvoie toutes 1 les valeurs réelles et 0 les autres valeurs (qui sontnull, Inf+Inf-, etNaN). Par exemple is_number($A).

journal

Log renvoie le logarithme naturel de son argument, qui peut être un nombre ou une série. Si la valeur est inférieure à 0, NaN est renvoyée. Par exemple, log(-1) ou log($A).

inf, infn, nan et null

Les fonctions inf, infn, nan et null renvoient toutes une seule valeur du nom. Ils existent principalement pour les tests. Exemple: null().

round

Round renvoie une valeur entière arrondie. Par exemple, round(3.123) ou round($A).

ceil

Ceil arrondit le nombre à la valeur entière la plus proche. Par exemple, ceil(3.123) renvoie 4.

floor

Floor arrondit le nombre à la valeur entière la plus proche. Par exemple,floor(3.123) renvoie3.

Réduire

Reduce prend une ou plusieurs séries chronologiques renvoyées par une requête ou une expression et transforme chaque série en un seul numéro. Les étiquettes de la série chronologique sont conservées sous forme d'étiquettes sur chaque nombre réduit produit.

Domaines :

  • Fonction — La fonction de réduction à utiliser

  • Entrée — La variable (RefID (telle queA)) à rééchantillonner

  • Mode — Permet de contrôler le comportement de la fonction de réduction lorsqu'une série contient des valeurs non numériques (null, NaN, +-Inf)

Fonctions de réduction

Count

Count renvoie le nombre de points dans chaque série.

Méchant

La moyenne renvoie le total de toutes les valeurs de chaque série divisé par le nombre de points de cette série. En strict mode, si l'une des valeurs de la série est nulle ou nan, ou si la série est vide, NaN est renvoyé.

Min et Max

Min et Max renvoient respectivement la plus petite ou la plus grande valeur de la série. En strict mode, si l'une des valeurs de la série est nulle ou nan, ou si la série est vide, NaN est renvoyé.

Sum

Sum renvoie le total de toutes les valeurs de la série. Si la série est de longueur nulle, la somme sera égale à 0. En strict mode, s'il existe des valeurs NaN ou Null dans la série, NaN est renvoyé.

Dernier

Last renvoie le dernier chiffre de la série. Si la série n'a aucune valeur, elle renvoie NaN.

Modes de réduction

Stricte

En mode strict, la série d'entrées est traitée telle quelle. Si l'une des valeurs de la série n'est pas numérique (null, NaN ou +-Inf), NaN est renvoyé.

Supprimer les données non numériques

Dans ce mode, toutes les valeurs non numériques (null, NaN ou +-Inf) de la série d'entrée sont filtrées avant d'exécuter la fonction de réduction.

Remplacer les données non numériques

Dans ce mode, toutes les valeurs non numériques sont remplacées par une valeur prédéfinie.

Rééchantillonner

Resample modifie les horodatages de chaque série chronologique afin d'avoir un intervalle de temps constant. Le principal cas d'utilisation est que vous pouvez rééchantillonner des séries chronologiques qui ne partagent pas les mêmes horodatages afin de pouvoir effectuer des calculs entre elles. Cela peut être fait en rééchantillonnant chacune des deux séries, puis en effectuant une opération mathématique faisant référence aux variables rééchantillonnées.

Domaines :

  • Entrée — Variable des données de séries chronologiques (RefID (par exempleA)) à rééchantillonner

  • Rééchantillonner vers : la durée du rééchantillonnage, par exemple, les 10s. unités peuvent être des s secondes, m des minutes, h des heures, d des jours, w des semaines et y des années.

  • Sous-échantillonnage : fonction de réduction à utiliser lorsqu'il existe plusieurs points de données par échantillon de fenêtre. Voir l'opération de réduction pour plus de détails sur le comportement.

  • Upsample — Méthode à utiliser pour remplir un échantillon de fenêtre ne contenant aucun point de données.

    • le pad se remplit avec la dernière valeur connue

    • remblai avec la prochaine valeur connue

    • fillna pour remplir les fenêtres d'exemple vides avec NaNs

Écrire une expression

Si votre source de données les prend en charge, Grafana affiche le bouton Expression et affiche toutes les expressions existantes dans la liste de l'éditeur de requêtes.

Pour écrire une expression
  1. Ouvrez le panneau.

  2. Sous la requête, choisissez Expression.

  3. Dans le champ Opération, sélectionnez le type d'expression que vous souhaitez écrire.

  4. Écrivez l'expression.

  5. Choisissez Appliquer.

Cas spéciaux

Lorsqu'une source de données interrogée ne renvoie aucune série ni aucun chiffre, le moteur d'expression le renvoie. NoData Par exemple, si une demande contient deux requêtes de source de données fusionnées par une expression, si elle NoData est renvoyée par au moins l'une des requêtes de source de données, le résultat renvoyé pour l'ensemble de la requête estNoData. Pour plus d'informations sur la façon dont Grafana Alerting traite les NoData résultats, consultez. Gestion de l'absence de données ou des cas d'erreur