Escribe consultas de expresión - Amazon Managed Grafana

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Escribe consultas de expresión

Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana.

Para ver los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte. Trabajando en Grafana versión 9

Para ver los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte. Trabajando en Grafana versión 8

Las expresiones del lado del servidor permiten manipular los datos devueltos por las consultas mediante operaciones matemáticas y de otro tipo. Las expresiones crean datos nuevos y no manipulan los datos devueltos por las fuentes de datos.

Acerca de las expresiones

Las expresiones del lado del servidor permiten manipular los datos devueltos por las consultas mediante operaciones matemáticas y de otro tipo. Las expresiones crean datos nuevos y no manipulan los datos devueltos por las fuentes de datos, aparte de realizar una pequeña reestructuración de los datos para convertirlos en una entrada aceptable para las expresiones.

Uso de expresiones

Las expresiones son las más utilizadas por las alertas de Grafana. El procesamiento se realiza en el lado del servidor, por lo que las expresiones pueden funcionar sin una sesión de navegador. Sin embargo, las expresiones también se pueden usar con fuentes de datos y visualizaciones de backend.

nota

Las expresiones no funcionan con las alertas de los tableros de mandos antiguos.

Las expresiones están diseñadas para aumentar las fuentes de datos, ya que permiten combinar consultas de diferentes fuentes de datos o proporcionan operaciones que no están disponibles en una fuente de datos.

nota

Siempre que sea posible, debe procesar los datos dentro de la fuente de datos. Copiar datos del almacenamiento al servidor Grafana para su procesamiento es ineficiente, por lo que las expresiones están destinadas a un procesamiento de datos ligero.

Las expresiones funcionan con consultas de fuentes de datos que devuelven series temporales o datos numéricos. También funcionan con datos multidimensionales. Por ejemplo, una consulta que devuelve varias series, donde cada serie se identifica mediante rótulos o rótulos.

Una expresión individual toma una o más consultas u otras expresiones como entrada y agrega datos al resultado. Cada expresión o consulta individual se representa mediante una variable que es un identificador denominado refID (por ejemplo, la letra A o por defectoB).

Para hacer referencia al resultado de una expresión individual o a una consulta de fuente de datos en otra expresión, este identificador se utiliza como variable.

Tipos de expresiones

Las expresiones funcionan con dos tipos de datos.

  • Colección de series temporales.

  • Una colección de números, donde cada número es un elemento.

Cada colección se devuelve a partir de una única consulta o expresión de fuente de datos y se representa mediante el ReFid. Cada colección es un conjunto, en el que cada elemento del conjunto se identifica de forma única por sus dimensiones, que se almacenan como etiquetas o pares clave-valor.

Consultas a la fuente de datos

Las expresiones del lado del servidor solo admiten consultas de fuentes de datos para fuentes de datos de back-end. Por lo general, se supone que los datos están etiquetados como datos de series temporales.

Las consultas a la fuente de datos, cuando se utilizan con expresiones, las ejecuta el motor de expresiones. Cuando lo hace, reestructura los datos para que sean una serie temporal o un número por marco de datos. Por ejemplo, si utiliza una fuente de datos que devuelve varias series en un fotograma en la vista de tabla, puede que observe un aspecto diferente cuando se ejecuta con expresiones.

Actualmente, el único formato que no es de series temporales (número) que se admite cuando se utilizan marcos de datos es si se tiene una respuesta de tabla que devuelve un marco de datos sin hora, columnas de cadenas y una columna numérica:

La siguiente tabla de ejemplo produce un número que funciona con expresiones. Las columnas de cadenas se convierten en etiquetas y la columna numérica en el valor correspondiente. Por ejemplo, {"Loc": "MIA", "Host": "A"} con un valor de 1.

Loc Host AVG_CPU

MIA

A

1

NYC

B

2

Operaciones

Puede usar las siguientes operaciones en las expresiones: matematizar, reducir y remuestrear.

Math (Matemática)

Las matemáticas son para fórmulas matemáticas de formato libre sobre series temporales o datos numéricos. Las operaciones matemáticas toman números y series temporales como entrada y los cambian por números y series temporales diferentes.

Por ejemplo, se hace referencia a los datos de otras consultas o expresiones con el prefijo RefID con un signo de dólar. $A Si el nombre de la variable tiene espacios, puedes usar una sintaxis de corchetes similar a la siguiente. ${my variable}

Las constantes numéricas pueden estar en decimal (2.24), octal (con un cero a la izquierda072) o hexadecimales (con un 0x a la izquierda). 0x2A También se admiten exponenciales y signos (por ejemplo,). -0.8e-2

Operadores

Se admiten los operadores aritméticos (+binarios y unarios -*,/,%,, exponente**), relacionales (<,>,, == !=>=,<=) y lógicos (&&||, y unarios). !

El comportamiento de la operación con los datos depende de si se trata de datos numéricos o de series temporales.

En las operaciones binarias, como $A + $B o$A || $B, el operador se aplica de las siguientes maneras según el tipo de datos:

  • Si ambos $A y $B son números, la operación se realiza entre los dos números.

  • Si una variable es un número y la otra es una serie temporal, se realiza la operación entre el valor de cada punto de la serie temporal y el número.

  • Si ambos $A y $B son datos de series temporales, la operación entre cada valor de las dos series se realiza para cada marca temporal que exista en ambos $A y$B. La Resample operación se puede utilizar para alinear las marcas de tiempo.

Resumen:

  • Número <Operation>número = número

  • <Operation>Serie numérica = serie

  • Serie <Operation>serie = serie

Como las expresiones funcionan con varias series o números representados por una sola variable, las operaciones binarias también realizan una unión (unión) entre las dos variables. Esto se hace en función de las etiquetas de identificación asociadas a cada serie o número individual.

Por lo tanto, si tiene números con etiquetas como «{host=web01}in» $A y otro número «IN» $B con las mismas etiquetas, la operación se realiza entre esos dos elementos dentro de cada variable y el resultado compartirá las mismas etiquetas. Las reglas para el comportamiento de esta unión son las siguientes:

  • Un artículo sin etiquetas se unirá a cualquier cosa.

  • Si $B ambos $A contienen solo un elemento (una serie o un número), se unirán.

  • Si las etiquetas coinciden exactamente, se unirán.

  • Si las etiquetas son un subconjunto de las demás, por ejemplo, si un elemento $A está etiquetado {host=A,dc=MIA} y otro elemento $B está etiquetado, se {host=A} unirán.

  • Si dentro de una variable, por ejemplo, $A hay diferentes claves de etiqueta para cada elemento, el comportamiento de unión no está definido.

Los operadores lógicos y relacionales devuelven 0 si es falso y 1 si es verdadero.

Funciones matemáticas

Si bien la mayoría de las funciones se encuentran en las propias operaciones de expresión, la operación matemática tiene algunas funciones que son similares a los símbolos o operadores matemáticos. Cuando las funciones pueden tomar números o series, se devolverá el mismo tipo que el argumento. Cuando se trata de una serie, la operación se realiza para el valor de cada punto de la serie.

abdominales

abs devuelve el valor absoluto de su argumento, que puede ser un número o una serie. Por ejemplo, abs(-1) o abs($A).

is_inf

is_inf toma un número o una serie y devuelve 1 Inf valores (negativos o positivos) y 0 otros valores. Por ejemplo, is_inf($A).

nota

Si necesitas comprobar específicamente el infinito negativo, por ejemplo, puedes hacer una comparación como: $A == infn()

is_nan

is_nan toma un número o una serie y devuelve valores y 1 0 otros NaN valores. Por ejemplo, is_nan($A). Esta función es necesaria para esta comprobación porque no NaN es igual a. NaN

es_null

is_null toma un número o una serie y devuelve valores y 1 0 otros null valores. Por ejemplo, is_null($A).

es_número

is_number toma un número o una serie y devuelve todos 1 los valores numéricos reales y 0 los demás valores (que sonnull,Inf+, Inf- y). NaN Por ejemplo, is_number($A).

registro

Log devuelve el logaritmo natural de su argumento, que puede ser un número o una serie. Si el valor es menor que 0, NaN se devuelve. Por ejemplo, log(-1) o log($A).

inf, infn, nan y null

Todas las funciones inf, infn, nan y null devuelven un único valor del nombre. Existen principalmente para realizar pruebas. Ejemplo:null().

round

Round devuelve un valor entero redondeado. Por ejemplo, round(3.123) o round($A).

ceil

Ceil redondea el número al valor entero más cercano. Por ejemplo, ceil(3.123) devuelve 4.

floor

Floor redondea el número hacia abajo al valor entero más cercano. Por ejemplo,floor(3.123) devuelve3.

Reducir

Reducir toma una o más series temporales devueltas por una consulta o expresión y convierte cada serie en un único número. Las etiquetas de la serie temporal se mantienen como etiquetas en cada número reducido generado.

Campos:

  • Función: la función de reducción que se va a utilizar

  • Entrada: la variable (RefID (comoA)) que se va a volver a muestrear

  • Modo: permite controlar el comportamiento de la función de reducción cuando una serie contiene valores no numéricos (null, NaN, +-Inf)

Funciones de reducción

Recuento

El recuento devuelve el número de puntos de cada serie.

Mean

La media devuelve el total de todos los valores de cada serie dividido por el número de puntos de esa serie. En strict modo, si algún valor de la serie es nulo o nan, o si la serie está vacía, se devuelve NaN.

Mín y máximo

Mín y Max devuelven el valor más pequeño o más alto de la serie, respectivamente. En strict modo, si algún valor de la serie es nulo o nan, o si la serie está vacía, se devuelve NaN.

Sum (Suma)

La suma devuelve el total de todos los valores de la serie. Si la serie tiene una longitud cero, la suma será 0. En strict el modo, si hay valores NaN o Null en la serie, se devuelve NaN.

Último

Last devuelve el último número de la serie. Si la serie no tiene valores, devuelve NaN.

Modos de reducción

Estricto

En el modo estricto, la serie de entrada se procesa tal cual. Si algún valor de la serie no es numérico (null, NaN o +-Inf), se devuelve NaN.

Elimine los valores no numéricos

En este modo, todos los valores no numéricos (null, NaN o +-Inf) de la serie de entrada se filtran antes de ejecutar la función de reducción.

Sustituya los no numéricos

En este modo, todos los valores no numéricos se sustituyen por un valor predefinido.

Remuestrear

El remuestreo cambia las marcas de tiempo de cada serie temporal para tener un intervalo de tiempo coherente. El caso de uso principal es volver a muestrear series temporales que no comparten las mismas marcas temporales para poder realizar operaciones matemáticas entre ellas. Esto se puede hacer volviendo a muestrear cada una de las dos series y, a continuación, mediante una operación matemática que haga referencia a las variables remuestreadas.

Campos:

  • Entrada: la variable de los datos de series temporales (RefID (comoA)) que se va a volver a muestrear

  • Remuestrear a: el tiempo que se va a volver a muestrear, por ejemplo. 10s Las unidades pueden ser s m segundos, minutos, h horas, d días, w semanas y y años.

  • Reducción de muestreo: función de reducción que se utiliza cuando hay más de un punto de datos por muestra de ventana. Consulte la operación de reducción para obtener detalles sobre el comportamiento.

  • Upsample: el método que se utiliza para rellenar una muestra de ventana que no tiene puntos de datos.

    • pad se rellena con el último valor conocido

    • rellenar con el siguiente valor conocido

    • rellene para llenar las ventanas de muestra vacías con NaNs

Escribe una expresión

Si su fuente de datos las admite, Grafana muestra el botón Expresión y muestra todas las expresiones existentes en la lista del editor de consultas.

Para escribir una expresión
  1. Abre el panel.

  2. Debajo de la consulta, selecciona Expresión.

  3. En el campo Operación, seleccione el tipo de expresión que desee escribir.

  4. Escribe la expresión.

  5. Seleccione Apply.

Casos especiales

Cuando una fuente de datos consultada no devuelve series ni números, vuelve NoData el motor de expresiones. Por ejemplo, si una solicitud contiene dos consultas de fuente de datos que se combinan mediante una expresión, si NoData la devuelve al menos una de las consultas de fuente de datos, el resultado devuelto para toda la consulta esNoData. Para obtener más información sobre cómo Grafana Alerting procesa los NoData resultados, consulte. Configurar las reglas de alertas gestionadas de Grafana

En el caso de utilizar una expresión en varias consultas, el motor de expresiones requiere que todas las consultas devuelvan una marca de tiempo idéntica. Por ejemplo, si se utilizan las matemáticas para combinar el resultado de varias consultas SQL que utiliza cada una de ellasSELECT NOW() AS "time", la expresión solo funcionará si todas las consultas dan como resultado NOW() una marca de tiempo idéntica, lo que no siempre ocurre. Para resolver este problema, puede sustituirla por NOW() una hora arbitraria, por ejemploSELECT 1 AS "time", o por cualquier otra marca de tiempo válida de UNIX.