Virtualización

Proxmox VE, Zabbix y Grafana: dos dashboards para ver hipervisores y máquinas virtuales en una sola vista

Por Equipo Cloud Privado · · 11 min de lectura
Un panel de hipervisores con calibradores de CPU y RAM enlazado con flechas a una tabla de máquinas virtuales

Las claves en 30 segundos

  • Qué es: dos dashboards de Grafana para Proxmox VE, uno de hipervisores y otro de máquinas virtuales, publicados por LAKA Soluciones Tecnológicas en GitHub el 28 de octubre de 2026 con licencia AGPL-3.0, en español, portugués e inglés.
  • No hacen falta scripts ni ítems nuevos en Zabbix: leen la plantilla oficial Proxmox VE by HTTP, tanto la de Zabbix 7.0 (claves proxmox.*) como la de 7.2 en adelante (claves proxmox_ve.*), y detectan solos cuál está vinculada.
  • Por dentro son un único panel Business Text con unos 40 KB de JavaScript que pide a la API de Zabbix el último valor de cada ítem, a través del propio plugin de Zabbix para Grafana. Por eso no dependen del rango de tiempo elegido.
  • Las versiones del README ya se han quedado cortas: Grafana va por la 13.3, Business Text 6.3 exige Grafana 12.3 o superior y Zabbix 8.0 todavía no es definitiva (RC3 del 29 de octubre).
  • Dos detalles de permisos que conviene conocer: en Proxmox, ver las actualizaciones pendientes exige Sys.Modify, que el rol de solo lectura no da; en Grafana, el usuario de Zabbix del datasource debería ser de solo lectura.

Zabbix trae un dashboard para Proxmox desde que existe la plantilla Proxmox VE by HTTP, y cumple: los datos están. El problema aparece cuando hay varios hipervisores y unas cuantas decenas de máquinas virtuales. Para saber qué nodo va justo de RAM, qué almacenamiento está a punto de llenarse o qué VM se está comiendo la CPU hay que ir saltando entre hosts, ítems y gráficas. En un NOC, donde alguien tiene que entender la situación de un vistazo, eso es tiempo perdido.

Willian Tola, de LAKA Soluciones Tecnológicas, ha resuelto esa parte con dos dashboards de Grafana que se publicaron en GitHub a finales de octubre. Hemos descargado los JSON, leído el código que ejecutan y contrastado lo que piden con la plantilla de Zabbix, la API de Proxmox VE y los plugins de Grafana en sus versiones actuales.

Qué enseña cada dashboard

HipervisoresMáquinas virtuales
Resumen arribaNodos en línea, CPU y RAM media, almacenamiento en advertencia o crítico y problemas activos de Zabbix con su severidad máximaTotal, en ejecución, detenidas, advertencias, críticas y sin datos
CuerpoUna tarjeta por nodo: estado, versión de PVE, tiempo activo, calibradores de CPU y RAM, anillo del disco raíz y almacenamientos ordenados del más lleno al más vacíoUna tabla con estado, nombre, ID, nodo, CPU, vCPU, RAM usada y total, sistema de archivos, E/S de disco y de red y tiempo activo
FiltrosBúsqueda por host o nodo; Todos, Con problemas y Fuera de líneaPestañas por estado con contador, vista QEMU o LXC, búsqueda por nombre, ID, nodo o host y paginación de 25, 50, 100 o todas
OrdenAlmacenamiento de más lleno a más vacío (cinco visibles y botón para el resto)Primero lo que más consume, con las críticas arriba; se puede ordenar por cualquier columna

Los umbrales son los mismos en los dos: advertencia desde el 75 % y crítico desde el 90 %, para CPU, RAM, disco raíz y almacenamiento. El estado de una VM se calcula con el mayor de sus dos porcentajes, CPU o RAM. Hay además dos estados que evitan falsas alarmas: Detenida, si Proxmox informa de que está apagada, y Sin datos, si está encendida pero no llegan CPU ni RAM. Un guion (—) significa que no hay lectura válida, no que la máquina esté caída.

Lo más práctico es la navegación. Desde la tarjeta de un nodo, Ver sus VMs abre el segundo dashboard filtrado a las máquinas de ese nodo. Desde la tabla de VMs, el nombre del nodo devuelve a su hipervisor. Los enlaces conservan el grupo, los hosts y el rango de tiempo. Para que funcionen hay que importar los dashboards con sus UID originales (proxmox-hipervisores-es y proxmox-maquinas-virtuales-es, o terminados en -pt y -en en los otros idiomas), porque los enlaces apuntan a ellos.

Cómo funcionan por dentro

Abrir el JSON depara una sorpresa: cada dashboard tiene un solo panel, del tipo Business Text. Toda la interfaz (tarjetas, calibradores, tabla, filtros y pestañas) la dibuja un bloque de unos 40 KB de JavaScript en la función After Render del panel, con su hoja de estilos al lado. Ni gráficas de serie temporal ni gauges nativos de Grafana: los calibradores son SVG generados en el navegador.

Ese código no usa las consultas normales del panel para los datos. Llama directamente a la API de Zabbix a través del endpoint de recursos del plugin de Zabbix en Grafana (/api/datasources/uid/<uid>/resources/zabbix-api) con cuatro métodos de lectura: host.get, item.get, problem.get y trigger.get. De cada ítem cuya clave empieza por proxmox pide lastvalue y lastclock, es decir, el último valor que recibió Zabbix y cuándo.

Eso explica dos cosas del README que parecen raras al principio:

  • Los valores no cambian con el rango de tiempo. Se muestra el último dato recibido, sea de hace un minuto o de hace un rato. El texto «Actualizado hace» indica cuándo consultó el dashboard la API, no la antigüedad de cada métrica. El panel se refresca cada minuto.
  • No le afectan los valores descartados. La plantilla de Proxmox descarta muchos valores que no cambian para ahorrar historial, y un panel de series temporales con un rango corto puede quedarse en blanco. Pedir lastvalue lo evita.

La detección de plantilla se hace por las claves. Si llegan claves proxmox_ve.*, el dashboard usa la plantilla actual; si llegan proxmox.*, la heredada de Zabbix 7.0. Lo hemos comprobado en el código fuente de Zabbix: la versión 7.0.32 sigue usando proxmox.* y las ramas 7.4.16 y 8.0.0rc3 usan proxmox_ve.*.

Plantilla de Zabbix 7.0Plantilla de 7.2, 7.4 y 8.0
Prefijo de las clavesproxmox.*proxmox_ve.*
vCPU de cada VMNo la informa (sale «—»)Sí
Sistemas de archivos de las VMsNo (sale «—»)Sí, a través del agente QEMU
Extras del nodo en la tarjetaiowait y cargaNúmero de CPU, actualizaciones pendientes, IP y SMART

Los umbrales del 75 % y el 90 % están definidos como constantes al principio del JavaScript (PV_WARN y PV_CRIT). Quien quiera otros tendrá que editar el código del panel; no son variables del dashboard.

Qué versiones piden de verdad (a 3 de noviembre de 2026)

El README habla de Grafana 11 o 12, Zabbix 7.0 a 8.0, el plugin de Zabbix y Business Text 6.x. El ecosistema se ha movido estos meses y conviene ajustar esas cifras:

PiezaLo que dice el READMESituación real a 3-nov-2026
Grafana11 o 12La versión estable más reciente es la 13.3.0 (27 de octubre). La 13 no aparece entre las probadas
Plugin de Zabbix (alexanderzobnin-zabbix-app)Versión compatible; los JSON declaran la 5.0.0 como referenciaVa por la 6.10.2 (2 de noviembre) y pide Grafana 11.6 o superior
Business Text (marcusolsson-dynamictext-panel)6.xAhora lo mantiene Grafana Labs (el repositorio de Volkov Labs está archivado). La 6.3.0 exige Grafana 12.3; con Grafana 11 hay que quedarse en la 6.2.0
Zabbix7.0, 7.2, 7.4 u 8.08.0 sigue en release candidate (RC3, 29 de octubre); el calendario oficial la sitúa en el cuarto trimestre de 2026. 7.0 LTS tiene soporte completo hasta junio de 2027

Dicho de otra forma: hoy se puede apoyar en Zabbix 7.0 LTS o 7.4 y en Grafana 12.3 o superior con las últimas versiones de los dos plugins. Lo de Zabbix 8.0 es compatibilidad con la RC, y habrá que repasarlo cuando salga la definitiva.

Una precisión sobre Business Text: el código de After Render se ejecuta sin cambiar nada en grafana.ini. El parámetro disable_sanitize_html solo afecta al HTML de la plantilla del panel, que aquí son unas pocas líneas; el resto lo inserta el JavaScript.

Instalación, en corto

  1. Plantilla en Zabbix: vincular Proxmox VE by HTTP a un host por cada servidor o clúster Proxmox, con el token de API en las macros de la plantilla, y comprobar en Monitoring → Latest data que llegan datos recientes.
  2. Plugins en Grafana: instalar y habilitar la app de Zabbix y Business Text, desde Administration → Plugins and data → Plugins o por línea de comandos (grafana cli plugins install alexanderzobnin-zabbix-app y grafana cli plugins install marcusolsson-dynamictext-panel, y reiniciar el servicio). En Docker o Grafana Cloud, con el mecanismo de cada despliegue.
  3. Datasource de Zabbix apuntando a la API, con un usuario que vea los grupos de los hosts de Proxmox.
  4. Importar los dos JSON del mismo idioma en Dashboards → New → Import, eligiendo el mismo datasource en ambos y sin cambiar los UID.
  5. Validar: que aparecen todos los nodos, que el total de VMs cuadra con Proxmox y que los botones entre dashboards abren lo que deben.

Un aviso práctico: el README habla de una carpeta dashboards/, de un fichero de textos src/i18n.json y de unas pruebas en tests/run_tests.sh. En el repositorio publicado a 3 de noviembre los seis JSON están en la raíz y ni los textos ni las pruebas están subidos. Los JSON funcionan igual, pero no hay que buscar esas rutas.

Antes de llevarlo a un NOC

Los dashboards no escriben nada en Zabbix ni en Proxmox. Aun así, como todo lo que conecta herramientas de monitorización, hay cuatro cosas que merece la pena revisar.

1. El rol del token de Proxmox. La plantilla de Zabbix recomienda un usuario y un token dedicados. El rol natural es PVEAuditor, de solo lectura, que en Proxmox VE 9 ya incluye VM.GuestAgent.Audit, el permiso que hace falta para leer los sistemas de archivos de las VMs por el agente QEMU. Pero hay una excepción que no cuenta la plantilla: según la API de Proxmox VE, listar las actualizaciones pendientes (GET /nodes/<nodo>/apt/update) exige Sys.Modify sobre el nodo, un permiso que permite cambiar la configuración del sistema. Con PVEAuditor, ese dato saldrá vacío. Nuestra recomendación es aceptarlo y vigilar las actualizaciones por otra vía antes que dar Sys.Modify a un token de monitorización. Repasamos cómo montar roles y tokens con privilegios mínimos en endurecer el acceso a Proxmox.

2. El usuario de Zabbix del datasource. El endpoint que usan los dashboards no deja pasar cualquier llamada: el plugin tiene una lista de métodos permitidos y bloquea los demás. Esa lista, en la versión 6.10.2, incluye también script.execute y event.acknowledge, que no son de lectura. Cualquier panel de Grafana con acceso a ese datasource podría llamarlos. La protección real está en Zabbix: un usuario con rol de solo lectura y acceso únicamente a los grupos de Proxmox.

3. Leer el código antes de importarlo. Un dashboard con JavaScript en After Render ejecuta ese código en el navegador de cada persona que lo abre y con su sesión de Grafana. El de LAKA es legible y solo hace las cuatro consultas descritas, pero es buena costumbre revisarlo en cada actualización, igual que se revisaría un script. La licencia AGPL-3.0 permite modificarlo; si se redistribuye una versión modificada, hay que publicar sus cambios.

4. La madurez del proyecto. El repositorio se creó el 28 de octubre de 2026, lo firma una sola persona y aún no tiene estrellas ni forks. No es una crítica, todo empieza así, pero lo prudente es hacer un fork y fijar la versión que se valida, en lugar de importar directamente la última cada vez.

Dónde encaja

Para quien ya tiene Zabbix como herramienta de monitorización, esta es probablemente la forma más barata de tener una vista de Proxmox pensada para operar: no añade agentes, ni exportadores, ni otra base de datos. Si no hay Zabbix, montarlo solo para esto no tiene mucho sentido. Hay alternativas más directas, desde Pulse, un panel ligero para Proxmox, Kubernetes y Docker, hasta Grafana con Prometheus.

Las métricas, además, son solo la mitad del diagnóstico. Un dashboard dice que una VM está al 95 % de RAM; por qué, lo cuentan los registros. Lo explicamos en centralizar logs con Loki y Grafana, que se complementa bien con esto.

Y un detalle de futuro. Desde Proxmox VE 9.0, el servidor de métricas externo admite OpenTelemetry, y Zabbix 8.0 estrena una plantilla Proxmox VE by OTLP que lee ese flujo desde ClickHouse. De momento solo cubre el nodo (CPU, carga, memoria, ARC de ZFS, disco raíz y tiempo activo), no las VMs. Además, sus ítems no siguen el esquema de claves de la plantilla HTTP. Los dashboards de LAKA están pensados para Proxmox VE by HTTP, y es esa la que hay que vincular.

Preguntas frecuentes

¿Necesito instalar algo en los nodos de Proxmox? No. La plantilla Proxmox VE by HTTP consulta la API de Proxmox con un token, sin agente en los nodos. Solo hace falta el agente QEMU dentro de las VMs si se quiere ver el uso de sus sistemas de archivos.

¿Funcionan con la plantilla de Zabbix 7.0? Sí. El dashboard detecta las claves proxmox.* de esa plantilla, aunque la vCPU y los sistemas de archivos de las VMs aparecerán como «—», porque esa versión no los recoge.

¿Por qué los valores no cambian al mover el rango de tiempo? Porque los dashboards piden a la API de Zabbix el último valor de cada ítem, no una serie temporal. Son una foto del estado actual que se refresca cada minuto, no un histórico. Para ver la evolución hay que ir a las gráficas de Zabbix o de Grafana.

¿Puedo cambiar los umbrales del 75 % y el 90 %? Sí, pero editando el código. Están definidos como constantes al principio del JavaScript del panel Business Text, no como variables del dashboard.

¿Valen para Grafana 13? El autor los declara para Grafana 11 y 12. Los plugins que usan tienen versiones compatibles con Grafana 13, pero no consta que los dashboards se hayan probado en ella. Lo prudente es validarlos primero en un entorno de pruebas.

Fuentes


¿Tienes varios clústeres Proxmox y nadie que mire los paneles cuando algo se tuerce? En Cloud Privado operamos Proxmox VE en centros de datos en España y, si lo necesitas, nos encargamos de la monitorización y la guardia 24/7 como servicio gestionado, también sobre tu propia infraestructura. Si quieres revisarlo, hablemos.

¿Proxmox en producción sin llevarlo tú?

Si prefieres no cargar con la operación, dinos qué tienes y qué te falta. Te contamos qué opciones hay para llevarlo gestionado.

Respuesta en 24–48 h laborables · Sin compromiso

¿Prefieres el correo? Escríbenos a comercialcloudprivado.com