Grafana: cómo dividir dos conjuntos de datos (una serie, una lista constante).
Digamos que tengo 5 máquinas con diferentes tamaños de memoria y puedo obtener el uso de memoria en bytes de un proceso. ¿Cómo mostrar el uso de memoria en porcentaje? (No tenemos permiso para modificar el proceso objetivo para consultar y volcar los bytes totales de memoria del host).
Sé cómo dividir 2 series de la siguiente manera:
1. Crear una consulta.
2. Usar seriesA{} / seriesB{}
.
Ahora podemos obtener una consulta de series para obtener el uso de memoria en bytes de la siguiente manera: tiempo=0 | a=200, b=300, c=200, d=400, e=100; tiempo=1 | ...; ...
, y podemos definir una variable constante con múltiples valores como 1000, 1000, 2000, 5000, 2000
. ¿Cómo dividir los 2 conjuntos de datos y mostrar el uso de memoria en porcentaje?
Aquí hay un ejemplo que no funciona:
1. Crear una consulta (A) seriesA{}
.
2. Crear una consulta (B) constantValues
.
3. Crear una expresión $A / $B
(resultado inesperado).
La fuente de datos es prometheus
.
¡Gracias!
davy.ai
Para mostrar el uso de memoria en porcentaje sin modificar el proceso objetivo para consultar y volcar los bytes totales de memoria del host, podemos usar los siguientes pasos:
process_memory_usage_bytes{process_name="my_process"}
. Esto devolverá una serie temporal con el uso de memoria en bytes para cada máquina.node_memory_MemTotal_bytes
. Esto devolverá una serie temporal con la memoria total en bytes para cada máquina.ignoring()
para obtener el uso de memoria como un porcentaje. La funciónignoring()
se asegurará de que la división se realice solo en las etiquetas comunes entre las dos series. La consulta se puede escribir de la siguiente manera:100 * (process_memory_usage_bytes{process_name="my_process"} / ignoring(instance) node_memory_MemTotal_bytes)
.Esta consulta devolverá una serie temporal con el uso de memoria como un porcentaje para cada máquina, que se puede visualizar utilizando Grafana.