es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  ,

Answer

  1. Avatar for 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:

    1. Crear una consulta para obtener el uso de memoria en bytes del proceso objetivo, por ejemplo: process_memory_usage_bytes{process_name="my_process"}. Esto devolverá una serie temporal con el uso de memoria en bytes para cada máquina.
    2. Crear una consulta para obtener la memoria total de cada máquina, por ejemplo, si el tamaño de memoria está disponible como una etiqueta en cada máquina, podemos usar: node_memory_MemTotal_bytes. Esto devolverá una serie temporal con la memoria total en bytes para cada máquina.
    3. Dividir las dos series utilizando la función ignoring() para obtener el uso de memoria como un porcentaje. La función ignoring() 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.

Comments are closed.