Grafana: Metaconsultas de Grafana (Transformaciones genéricas en resultados de consultas de series temporales)

Creado en 7 ene. 2016  ·  90Comentarios  ·  Fuente: grafana/grafana

Habilitará el soporte para funciones de transformación como escala, derivada, timeShift, MovingAverage para todas las fuentes de datos.

prioritimportant-longterm typfeature-request

Comentario más útil

¿Puedes al menos implementar algo simple como sumar y restar?

  • Métrica C: #A - #B
  • Métrica D: #A + #B

Todos 90 comentarios

Espero que esta función no se publique hasta ahora :-)

:+1:

¿Cuándo se espera que esta función se lance para la fuente de datos de elasticsearch?

no ETA, esperemos que este año :)

Si estuviéramos interesados/posibles de ayudar con el desarrollo, ¿por dónde empezaríamos? ¿Existe algún código como punto de partida?

No creo que haya ningún código para esto, todavía. Se debe tomar una decisión general si las metaconsultas se realizan del lado del servidor o del lado del cliente. Estoy a favor de hacer este lado del servidor para que también pueda usarse para alertar. La desventaja es que esto solo funcionaría para fuentes de datos proxy, pero creo que esto es lo que la mayoría de la gente está haciendo de todos modos.

Si es útil, pensé en este problema y tuve una discusión con Rashid antes de que se lanzara Timelion (las primeras confirmaciones privadas fueron antes de nuestra discusión, por lo que no puedo reclamar ningún crédito :)

https://drive.google.com/drive/folders/0B9HCLnVMhNurTVY1UUJWZGxOdEU

No sé si esta es la visión correcta, pero había estado pensando en componentes modulares, algunos de los cuales podrían ser potencialmente del lado del cliente o del servidor. Las ventajas del servidor incluyen el almacenamiento en caché y la minimización de la transferencia de datos para consultas/combinaciones más grandes. Una ventaja para el lado del cliente es para otras fuentes de datos donde los permisos se otorgan a través del navegador o potencialmente para agregar una nueva serie a un gráfico existente; el cliente podría simplemente consultarlo directamente.

Creo que el código timelion sería un comienzo interesante. Usamos el uso compartido de iframe de timelion y las plantillas en grafana para crear consultas de timelion con plantilla en grafana: un poco complicado, pero resuelve el problema hasta que aparece una solución mejor.

¡Gracias!

@yehosef Hola, gracias por todo este material. También comencé a trabajar en esto, pero más tarde, después de analizar estas discusiones, me di cuenta de que agregar timeshift solo para ES no era una idea mucho mejor, ya que agregar metaconsultas como Torkeo sugiere arriba. Si han comenzado a codificar esta parte, podría ayudarlos. Si no es así, estaré feliz de seguir adelante con las revisiones de sus diseños que llegarán más adelante.

salud.

@arcolife Todavía no hemos comenzado a trabajar en él; sería feliz si alguien puede recogerlo.

No sé cómo funcionan este tipo de cosas, pero es posible que podamos o estemos dispuestos a pagar por el desarrollo de estas características si eso lo hiciera más factible. No sé si hay un sistema de recompensas para este tipo de cosas, por ejemplo, el tanque de lluvia o alguna otra compañía dice que costará "$x" desarrollar la función y que las diferentes partes interesadas podrían contribuir. Para nosotros, esto y la capacidad de hacer consultas SQL son realmente valiosos.

@yehosef ¡Hola, gracias! Estoy contento de poder contribuir. :)
PD: si programar una reunión pronto (para discutir esas maquetas) ayuda, ¿hagámoslo?

Estoy feliz de hacer todo lo que pueda para ayudar a que esto avance. contácteme en [email protected] si desea intentar programar una reunión, o simplemente comunicarse sobre la idea de continuar.

@yehosef "La cuenta de correo electrónico a la que intentaste acceder no existe". :)
Lo probé en su [github_id] @ google [dot] com.

lo siento - es gmail.com

Hola, tenemos una ETA de cuándo estará disponible esta función para la fuente de datos OpenTSDB.

no hay ETA todavía, tal vez en 4.1 o 4.2, lo que significa que con suerte dentro de 6 meses

No estoy seguro de si este problema es similar a "Solicitud de función: se muestran dos datos de series de rango de tiempo diferentes en el mismo gráfico #3235", ya que me preocupa el #3235.
Entonces, si pudiera decirme específicamente sobre esto, cuándo estará disponible esta función para la fuente de datos OpenTSDB.

@torkelo cada vez que se revise este problema, copíeme a mí y a @yehosef porque tuvimos algunos intercambios de correos electrónicos sobre este pensamiento y los diseños que Yehosef había propuesto en este hilo, y me di cuenta de que es mejor traer esas ideas aquí para más información. exposición. Gracias.

muy interesado en actualizaciones sobre esto!

¿Alguna actualización sobre la fecha de lanzamiento de esta función? Tengo muchas ganas de usar la opción de cambio de tiempo para la fuente de datos de Elasticsearch.

También estaríamos muy interesados ​​en esto. Atm solo hay Timelion para Kibana

+1

¿Es posible crear un complemento de fuente de datos que tenga acceso a las otras fuentes de datos?
De esta manera, podría ser posible envolver las respuestas de la fuente de datos y transformarlas.

sí,

la fuente de datos incluida -- Mixta -- hace esto:

https://github.com/grafana/grafana/blob/master/public/app/plugins/datasource/mixed/datasource.ts#L13

El miércoles 23 de noviembre de 2016 a las 15:26, Bruno Meneguello [email protected]
escribió:

Es posible crear un complemento de fuente de datos que tenga acceso al otro
¿fuentes de datos?
De esta manera, podría ser posible envolver las respuestas de la fuente de datos y transformarlas.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/grafana/grafana/issues/3677#issuecomment-262526082 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAq94YeRbQxzw_CDfEiDjjbZj4pJLmTks5rBE0wgaJpZM4HAses
.

¡Esto es perfecto! Creo que intentaré construir algo sobre esto, para crear algún lenguaje para tomar series de otras fuentes de datos y luego procesarlas con funciones.
¿Alguien más interesado?

@bkmeneguello asegúrese de leer mi comentario: https://github.com/grafana/grafana/issues/3677#issuecomment -230233579. Antes de implementar algo, debemos acordar si esto debe hacerse del lado del cliente (js) o del lado del servidor.

Claro, si esta implementación será central, pero para una vista previa podría hacerse como un complemento de fuente de datos.

@torkelo ¿Permitirá esto "dividir" dos consultas?

Muy interesado en esta funcionalidad también.

Yo también estaría interesado en esto también. Podría usar esto para tener la capacidad de mostrar un "total combinado" al pasar el mouse sobre todas las métricas en un panel que están apiladas.

@torkelo Hola, tenemos una hora estimada de llegada de cuándo esta función estaría disponible para la fuente de datos OpenTSDB.

@shivam009 sin ETA actualmente

@torkelo Hola,

¿Hay alguna ETA para #3677? Será muy útil al combinar sum/avg/etc en los resultados de múltiples métricas de la misma manera que lo hace la fuente de datos Graphite.
Usando Elasticsearch como fuente de datos aquí.

Todavía no hay ETA, pero es algo que esperamos lograr este año.

Podría ser útil comparar con un rango de tiempo arbitrario (por ejemplo, una "referencia de datos")

Hola @torkelo ,

¿Alguna actualización sobre el #3677?

no hay actualizaciones :( Publicaría actualizaciones aquí si tuviera alguna

Hola @torkelo ,

Gracias por la rápida respuesta. Esencialmente, mi requisito es promediar los puntos de datos devueltos por ES y clasificarlos en un intervalo de tiempo de 1 minuto. ¿Hay alguna otra alternativa para lograr funcionalidades de resumen y sumSeries en Elasticsearch?

@ shiv6146 ¿no puede usar la función de intervalo de histograma de fecha de Elasticsearch para eso?

@torkelo Puedo hacer un grupo anidado usando el histograma de fechas, pero desafortunadamente Grafana no me permite ocultar la salida del grupo interno y trazar solo los puntos de datos agregados :(

¿Puedes al menos implementar algo simple como sumar y restar?

  • Métrica C: #A - #B
  • Métrica D: #A + #B

@mstipanov está en nuestra hoja de ruta, pero estamos ocupados con otras funciones hasta después del verano.

@mstipanov
Espero ver esto lo antes posible también. Usando influxdb

•Métrica C: #A - #B
•Métrica D: #A + #B

definitivamente me gustaría ayudar en esto si hay una especificación. ¿Algún lugar donde pueda empezar a trabajar para este? También podría haber algunas métricas que podrían requerir más datos que están disponibles en la "A" existente, por ejemplo, requerirá un promedio móvil de 7 días (serie actual + 7 días de datos anteriores)

@torkelo , ¿tiene alguna idea sobre cómo cree que deberíamos implementarlo? Estoy dispuesto a invertir algo de tiempo en la construcción de este. Necesita una interfaz en la parte superior de Druid.

consideró extender a través de un complemento. Tendría que pasar el datasourceSrv al meta-queries-plugin y luego dejar que el complemento vuelva a llamar a la fuente de datos. Planeando trabajar primero en el promedio móvil y el cambio de tiempo.

Hola amigos, tuve un problema como @f1-outsourcing y @mstipanov (métrica A (+-) métrica B). Y luego, desarrollé un complemento de panel para hacer esto, llamado "Complemento de estadísticas calculadas". Si te interesa, este es mi github https://github.com/fabiojose/grafana-calcltdstat-plugin .

@fabiojose gracias, miré tu complemento. Gracias por publicarlo. Creo que sería mejor implementarlo como una fuente de datos de esa manera podemos usar cualquier panel como una tabla o un gráfico. He terminado con Time Shift. Lo abrirá en uno o dos días. Se hará con el promedio móvil para entonces también

Poshmark tiene https://github.com/GoshPosh/grafana-meta-queries de código abierto, admite columnas calculadas, promedio móvil y cambio de tiempo

¡Impresionante! ¡buen trabajo muchachos!

@torkelo , si tiene algo de tiempo, ¿puede dar su opinión sobre el complemento?

@Gauravshah sí! Lo siento, todo el equipo ha estado ocupado preparándose y viajando a una conferencia de desarrolladores que estamos patrocinando esta semana, por lo que ha sido lento en las revisiones y comentarios de los complementos. Tal vez la semana que viene o la semana siguiente

@torkelo no se preocupe, tómese su tiempo. Gracias

@torkelo ¿Hay alguna actualización?

También me gustaría ver esta función implementada lo antes posible.

Hola,
usando grafana v4.5.2 con Elasticsearch.
Necesita convertir la marca de tiempo en un valor booleano en función de si el tiempo transcurrido desde la marca de tiempo es inferior a 5 minutos.
valor del campo de script (el tiempo es una función que devuelve la época actual):
booleano( Tiempo - _valor > 300 )
¿Eso también está en tus planes?
Además, necesitamos la opción de generar un gráfico que sea la división de dos valores de diferentes consultas, a lo largo del tiempo.
Gracias,

@lilachmaliniak
podrías hacer ((new Date()).getTime() - A['_value']) > 300
dos fuentes de datos diferentes funcionarían

Gracias @Gauravshah
No pude hacer exactamente lo que sugirió, probablemente debido al tipo de valor, que es un número/int.
tengo error: 500
ahí es cuando configuro el script de opciones en: (((nueva fecha()).getTime() - _value) < 300000 )
Esta es la consulta:
{"search_type":"query_then_fetch","ignore_undisponible":true,"index":"beaconindex"} {"size":0,"query":{"bool":{"filter":[{"range": {"private_data.timestamp":{"gte":"1513673225106","lte":"1513676825106","format":"epoch_millis"}}},{"query_string":{"analyze_wildcard":true,"query" :"private_data.kes_hostname.keyword:(\"lilach\-centos\-vm.com\")"}}]}},"aggs":{"5":{"terms":{"field":" private_data.kes_hostname.keyword","size":10,"order":{"_term":"desc"},"min_doc_count":1},"aggs":{"1":{"max":{" field":"private_data.timestamp","missing":0,"script":{"inline":"((( new Date()).getTime() - _value) < 300000 ) "}}},"3 ":{"min":{"field":"private_data.systemMetrics.systemData.system.uptime"}}}}}} "
Ejecutando la misma consulta de Kibana, obtuve:
{
"error": {
"causa principal": [
{
"tipo": "class_cast_exception",
"motivo": nulo
}
],
"tipo": "búsqueda_fase_execución_excepción",
"motivo": "todos los fragmentos fallaron",
"fase": "consulta",
"agrupados": cierto,
"fragmentos_fallidos": [
{
"fragmento": 0,
"índice": "índice de baliza",
"nodo": "TGW3SyrEQHSnIi8qQt3rNw",
"razón": {
"tipo": "class_cast_exception",
"motivo": nulo
}
}
]
},
"estado": 500
}

Así que usé lo siguiente, en Opciones, script: (((new Date()).getTime() - _value) < 300000 ) ? 1 : 0
Y funciona convirtiendo los valores a sonó: [0,1]

Mi pregunta es: ¿cómo puedo convertir más el valor en Grafana, para mostrar el token en su lugar (por ejemplo, arriba/abajo)

Creo que eso tiene que estar soportado por grafana y no por este plugin como tal. Es posible que pueda asignar (((new Date()).getTime() - _value) < 300000 ) ? '↑' : '↓' aunque no lo he intentado

@Gauravshah , gracias
¿Puedes ser más específico, dónde configuro esto?
Si lo escribo en la pestaña Métrica en Métrica->Opciones->Script, el script se incluye en la consulta de Lucene como propiedad en línea y la consulta falla con el estado de error 500.
"script":{"inline":"(((nueva fecha()).getTime() - _value) < 300000 ) ? 'arriba' : 'abajo'"}

Creo que he entendido mal tu pregunta. No sé mucho sobre consultas de búsqueda elásticas. Pensé que estabas preguntando cómo hacerlo en el complemento de meta-consultas

@Gauravshah , sí, estoy tratando de hacerlo con consultas ES. Ya instalé el complemento de metaconsultas, pero por alguna razón no pude crear un tablero con él. Cuando se creó un nuevo tablero, la opción de tipo MetaQuery no estaba disponible. Lo intentaré de nuevo, gracias.

@Gauravshah , ¿cómo uso MetaQuery con fuente de datos ES?
¿Dónde puedo encontrar los documentos del complemento?
como no pude encontrar doc en git: https://github.com/GoshPosh/grafana-meta-queries
Gracias

Hola @Gauravshah ,
Logré crear un nuevo tablero después de instalar el complemento de fuente de datos MetaQueries.
después de crear una nueva tabla y establecer el Origen de datos de la tabla en -- Mixto --
agregó 2 consultas:
A ($datasource) Métricas: Max(private_data.timestamp), Group by:Term(private_data.kes_hostname.keyword)
B (Fuente de datos MetaQuery) Tipo Expresión aritmética ((nueva fecha()).getTime() - A['_value']) < 300000 ? 'arriba abajo'
La consulta A devuelve el valor esperado y se muestra correctamente en la tabla.
pero no puedo mostrar una columna con el valor de la expresión de la consulta B, y no puedo ver cuál es el resultado de la expresión, ni si tuvo éxito o no. No hay indicación.
Mi pregunta: ¿cómo depuro la consulta (la que usa metaQuery DS) y muestro el valor de la expresión en la tabla como una columna adicional?
Salud

la fuente de datos debe establecerse en Meta Queries y no mezclarse. Lo agregaré al archivo Léame del complemento :(

Hola @Gauravshah ,
Gracias.
Se cambió la fuente de datos de la tabla a "Fuente de datos MetaQuery" como usted aconsejó.
Ahora aparece el error "no se puede leer la propiedad 'longitud' de indefinido" y la tabla no muestra el pensamiento, como antes, la consulta de ES tiene éxito con el valor esperado.

@lilachmaliniak , ¿puede crear un problema en https://github.com/GoshPosh/grafana-meta-queries ? También adjunte el seguimiento de la pila desde su navegador.

Hola @Gauravshah ,
Nuevo problema agregado: https://github.com/GoshPosh/grafana-meta-queries/issues/9

👍

Este problema tiene más de 2 años. ¿Esta solicitud de función se convirtió en otra diferente?

👍

Muchos almacenes de datos de series temporales pueden hacer esto por usted, pero algunos (mirándolo en la nube) no lo hacen y es posible que nunca admitan este tipo de cosas.

Mientras tanto, al menos podemos hacer timeShift con dos paneles, pero el timeshift por consulta para hacer gráficos de comparación en el mismo panel sería bastante fantástico.

+1

@matschaffer y @JJMVG debería poder usar https://github.com/GoshPosh/grafana-meta-queries

@SwathiMuppalla , debería estar creando problemas en el repositorio de complementos, no aquí.

+1

+1 esto sería genial: no he tenido mucho éxito con el complemento grafana-meta-queries con 6.4 :(

Como una capa de visualización que admite una multitud de fuentes de datos, esta podría ser la joya de la corona de las funciones de monitoreo. Combinamos datos de MySQL, Elasticsearch y Prometheus en nuestros tableros, y la normalización de datos de una fuente basada en otra podría ser un gran avance en la importancia del producto en nuestra pila de monitoreo.

Este no es otro comentario de +1.

Esto es un +100 🙏🏼✌🏼

@torkelo Quizás sería posible usar algo como https://github.com/wesm/feather o https://arrow.apache.org/docs/python/ipc.html como una especie de "caché de almacenamiento de columnas" que luego se pueden usar para procesamiento o manipulaciones adicionales.

Puede obtener otras ideas del trabajo en https://www.dremio.com/ : parece un espacio de problema ligeramente relacionado (consultar una variedad de fuentes de datos y almacenar en caché en Arrow, etc. para una mayor manipulación y consulta).

@torkelo Quizás sería posible usar algo como https://github.com/wesm/feather o https://arrow.apache.org/docs/python/ipc.html como una especie de "caché de almacenamiento de columnas" que luego se pueden usar para procesamiento o manipulaciones adicionales.

Si bien es bueno tener herramientas externas para funciones avanzadas, esto no soluciona el problema en términos de simplicidad o integración con Grafana. Proporcionar las operaciones aritméticas muy básicas en dos series puede resolver el 80% de los problemas con solo el 20% del tiempo.

@redlus @yehosef ¿por qué https://github.com/GoshPosh/grafana-meta-queries no es una solución?

@torkelo si cree que https://github.com/GoshPosh/grafana-meta-queries resuelve el problema mencionado en este problema, debemos cerrar el problema y abordar que está siendo resuelto por un complemento para grafana. Es difícil para las personas escanear un problema largo para descubrir que hay un complemento que resuelve el problema.

@Gauravshah
Me encantaría ver un complemento que funcione, pero hemos tenido problemas al usar este complemento con versiones más nuevas de Grafana; es decir
https://github.com/GoshPosh/grafana-meta-queries/issues/82

@redlus deberías darle otra oportunidad, funciona en el grafana 6.4. Además, si la última versión de grafana era el único problema, había opciones para volver a una versión menor. No estoy seguro de por qué llamarías a would love to see a working plugin

@Gauravshah, lamentablemente, todavía no funciona con Grafana 6.5.1: no probé con 6.4, pero cambiar a una versión anterior puede no ser aceptable para la mayoría de los usuarios.

sin progreso ...

Veo a mucha gente rebotando aquí tratando de agregar múltiples fuentes de datos. Me pregunto si el panel blendstat resuelve el problema de algunas personas y si ese diseño podría reutilizarse en otros paneles.

https://grafana.com/grafana/plugins/farski-blendstat-panel

Blendstat llena un vacío, pero no funciona con la repetición o el bucle para todas las variables. Si hay una manera no sé cómo.

Acabo de encontrar otro caso de uso que espero que esto resuelva. Recibo las métricas de CloudWatch con un porcentaje (0,0-0,1), lo que me da números enteros 5, 7, etc. Esperaba un 0,5 %, un 0,7 % y no veo la forma de transformar eso.

Hola, disculpas si estoy pisando terreno antiguo aquí, pero este es un hilo bastante largo:

¿Tengo razón al pensar que esta solicitud de función es compatible con los gráficos producidos como resultado de la combinación de varias consultas? Por ejemplo, si se hiciera este trabajo, podría tomar una serie temporal de Prometheus y sumarla con una serie temporal de, por ejemplo, Stack Driver.

Si es así: ¿este trabajo aún está planeado, cuál es la hoja de ruta y necesita ayuda? :)

eso, más (espero) cambiar el tiempo de cualquier gráfico para poder comparar el gráfico de hoy con el de ayer, o el promedio de 7 días.
Sí, algunos almacenes de datos ya pueden hacer eso, pero esta debería ser una función genérica.

¿Fue útil esta página
0 / 5 - 0 calificaciones