Monitorizar un sistema de virtualización Proxmox mediante Pandora FMS. Monitorear estado del clúster Proxmox, de los OSD del almacenamiento hiperconvergente Ceph, CPU, RAM, procesos, cron, número de máquinas virtuales y contenedores, servicios Ceph, PVE.

Requisitos para monitorizar Proxmox con Pandora FMS

Necesitaremos disponer de un sistema de virtualización Proxmox. En el estudio de caso que nos ocupa, el sistema de virtualización está formado por tres nodos con Proxmox VE 8.4.0, con almacenamiento hiperconvergente (se comparten todos los discos duros de todos los nodos) con Ceph.

En el siguiente enlace explicamos cómo desplegar Proxmox en un equipo físico para montar un sistema de virtualización:

En este otro tutorial explicamos cómo montar un clúster Proxmox de varios nodos:

Y otro artículo sobre cómo desplegar un almacenamiento hiperconvergente con Ceph en Proxmox:

Por otro lado, dispondremos de un servidor con Pandora FMS. En el siguiente enlace explicamos cómo montar un servidor de monitorización con Pandora FMS:

Instalar Pandora Agent en todos los nodos del clúster Proxmox

Dado que Proxmox se despliega sobre Linux Debian 12, instalaremos el agente de Pandora FMS en cada nodo del clúster Proxmox. Para ello, seguiremos las instrucciones del siguiente tutorial:

Básicamente, desde el shell de comandos de cada nodo, ejecutaremos:

Configuraremos el fichero pandora_agent.conf de cada nodo, para introducir los datos de conexión al servidor de Pandora (en nuestro caso con la IP 192.168.100), con el comando:

Un ejemplo de contenido del fichero pandora_agent.conf:

Podremos añadir todos los módulos que queramos a cada nodo del clúster Proxmox, en el ejemplo anterior mostramos algunos estándar: tareas cron, último inicio de sesión, servicio SSH, número de procesos, memoria caché libre, uso de CPU, uso de disco, etc. Más adelante añadiremos un módulo más al fichero pandora_agent.conf, para monitorizar el clúster Ceph de almacenamiento.

Crear fichero Python para monitorizar el clúster Proxmox y almacenamiento Ceph

Crearemos un fichero llamado proxmox.py en la carpeta de cada nodo Proxmox:

/usr/share/pandorafms/agent/plugins/

Para ello, ejecutaremos el comando:

Copiaremos y pegaremos el siguiente script Python. Por supuesto, se trata de un ejemplo con unos datos de salida para monitorizar, que se pueden modificar y personalizar. En el caso de los umbrales de algunos de los módulos, que definen su estado (normal, alerta o crítico), podremos también ajustarlos a nuestras necesidades:

Una vez generado el fichero proxmox.py, le asignaremos el permiso de ejecución, con el comando:

Antes de ejecutar este fichero en Pandora FMS Agent, es conveniente probarlo desde el shell de Linux de uno de los nodos Proxmox, para verificar que funciona correctamente. Para ello, ejecutaremos el comando:

El comando debe devolver algo parecido a esto (que es el formato XML que reconoce Pandora FMS):

Si el resultado es similar al anterior, copiaremos el fichero proxmox.py a cada nodo del clúster Proxmox, podremos hacerlo con el comando scp:

En el caso anterior estamos copiando el fichero proxmox.py al nodo con IP 192.168.1.59.

Repetiremos el proceso para cada nodo, dejando el fichero proxmox.py en todos los nodos y en la misma carpeta.

Para que Pandora FMS Agent ejecute este fichero, desde cada nodo, editaremos el fichero pandora_agent.conf, con el comando:

Y al final del fichero, añadiremos la línea:

module_plugin proxmox.py

Guardaremos los cambios e reiniciaremos el servicio de Pandora Agent en uno de los nodos, para verificar que funciona correctamente:

Comprobaremos que el servicio Pandora Agent se ha iniciado correctamente con:

Comprobar resultado de monitorización de Proxmox en Pandora FMS

Transcurridos unos segundos, en nuestro servidor de Pandora FMS, deberían aparecernos los nuevos agentes (uno por cada nodo Proxmox) y, cada agente, contendrá todos los módulos especificados en el fichero pandora_agent.conf y los obtenidos por el script Python proxmox.py:

En este caso, monitorizaremos los siguientes agentes:

MóduloDescripción
/dev/fuse% de espacio usado en esta unidad (módulo estándar)
/dev/mapper/proxmox3–vg-root% de espacio usado en esta unidad (módulo estándar)
/dev/sda1% de espacio usado en esta unidad (módulo estándar)
Carga_CPUUso de CPU (%) (módulo estándar)
Carga_CPU_media_ultimo_minutoCarga media de la CPU en el ultimo minuto (módulo estándar)
Ceph_EstadoEstado de servicio Ceph
Ceph_OSD_DownNúmero de OSD inactivos en Ceph
Ceph_OSD_TotalNúmero total de OSD en Ceph
Ceph_OSD_UpNúmero de OSD activos en Ceph
Ceph_Pools_TotalNúmero total de pools en Ceph
CephFS_TotalNúmero de sistemas CephFS
Cluster_ConQuorumEstado del quorum del cluster (1=Con quorum, 0=Sin quorum)
Contenedores_Nodo_RunningNúmero de contenedores ejecutándose en este nodo
Contenedores_Nodo_StoppedNúmero de contenedores parados en este nodo
Contenedores_Nodo_TotalNúmero total de contenedores en este nodo
Estado_NodoEstado del nodo Proxmox
Memoria_Proxmox_PorcentajePorcentaje de memoria usado por Proxmox
Nodos_Cluster_OfflineNúmero de nodos offline en el cluster
Nodos_Cluster_OnlineNúmero de nodos online en el cluster
Nodos_Cluster_TotalNúmero total de nodos en el cluster
Nombre_NodoNombre del nodo Proxmox
Numero_ProcesosNúmero de procesos en ejecución
Servicio_ceph-mgrEstado del servicio ceph-mgr de Ceph
Servicio_ceph-monEstado del servicio ceph-mon de Ceph
Servicio_ceph-osdEstado del servicio ceph-osd de Ceph
Servicio_pve-clusterEstado del servicio pve-cluster
Servicio_pvedaemonEstado del servicio pvedaemon
Servicio_pveproxyEstado del servicio pveproxy
Servicio_pvestatdEstado del servicio pvestatd
Servicio_SSHServicio SSH (módulo estándar)
Tareas_CronNumero de tareas en el Cron (módulo estándar)
Ultimo_Inicio_SesionÚltimo usuario que inició sesión (módulo estándar)
VMs_Nodo_RunningNúmero de VMs ejecutándose en este nodo
VMs_Nodo_StoppedNúmero de VMs paradas en este nodo
VMs_Nodo_TotalNúmero total de VMs en este nodo