Unas caídas de agentes sin motivo pueden tener explicación por algo que ocurre en la forma de operar de Pandora FMS, concretamente en el /etc/init.d/pandora_agent_daemon
.
En este caso, se ha detectado en problema en sistemas con una infraestructura de virtualización basada en Virtuozzo®, donde se monitorizan tanto los nodos hardware como las máquinas virtuales que corren por debajo. Dado que Virtuozzo® realiza virtualización software, los procesos que corren en las máquinas virtuales se ven perfectamente ejecutando ps en el nodo hardware.
[root@xxxxxxx ~]# ps -Af | grep pandora_agent root 20643 17147 0 Aug25 ? 00:00:08 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 22665 20918 0 Aug25 ? 00:00:08 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 22862 21033 0 13:13 pts/5 00:00:00 grep pandora_agent root 23518 1 0 Aug25 ? 00:00:12 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 24839 31440 0 Aug25 ? 00:00:08 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 26703 24727 0 Aug25 ? 00:00:07 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 28677 16959 0 Aug25 ? 00:00:08 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora root 29524 301 0 Aug25 ? 00:00:08 /usr/bin/perl /usr/bin/pandora_agent /etc/pandora
Al sacar el PID del pandora_agent
a través de un ps para hacer un kill -por ejemplo- lo que ocurre es que se toma el identificador del primer agente listado de entre todos los que hay corriendo, que por estadística casi nunca va a ser el que nosotros queremos -el del nodo hardware-.
Al hacer stop o restart (detención o reinicio) de los agentes en los nodos hardware en realidad la orden se la estábamos aplicando a un agente indeterminado de una de las máquinas virtuales que corren debajo. Cuando se lanza el comando stop dentro de una máquina no hay problemas, claro, porque el ps solo ve sus propios procesos.
La solución es simplemente renombrar el directorio /etc/pandora por /etc/pandora_virt
y editar el fichero /etc/init.d/pandora_agent_daemon
y reemplazar la siguiente línea:
PANDORA_PATH=/etc/pandora
por
PANDORA_PATH=/etc/pandora_virt
Con esto, al arrancar y parar el proceso de la maquina “real”, no afectará a las máquinas virtuales.