Cómo activar el modo depuración en un agente de pandora con Pandora FMS Agent instalado. Este método nos será útil cuando algunos de los módulo (sensores/sondas) no devuelva el valor esperado o no devuelva ningún valor. Con la depuración podremos consultar el fichero XML que se envía al servidor con todos los datos de los sensores del cliente.
- Escenario inicial, servidor Pandora FMS, agente Pandora.
- Activar modo debug depuración en cliente Pandora FMS Agent.
- Consultar y revisar fichero XML que se envía al servidor de Pandora FMS desde un equipo con el agente.
- Fichero pandora_debug.log de depuración de errores en el agente de Pandora FMS Agent.
- Analizar ejecución de módulo/sensor/sonda personalizado en equipo con Pandora FMS Agent.
Escenario inicial, servidor Pandora FMS, agente Pandora
Dispondremos de un servidor de monitorización Pandora FMS y de una serie de clientes, algunos sin agente al tratarse de dispositivos como librerías robóticas, appliances de seguridad (firewall, WAF, …), switches, routers, SAI, .. y otros con el agente de Pandora instalado, como servidores Windows, Linux, etc..
Para el caso de los servidores/equipos que tengan instalado el agente (Pandora FMS Agent), enviarán los datos de los monitores (sensores, sondas, módulos) mediante el protocolo tentacle. El cliente genera un fichero XML con los datos de los sensores y lo envía, mediante tentacle, al servidor.
En principio el cliente (Pandora FMS Agent) enviará los datos al servidor de Pandora FMS «al vuelo», es decir, no se guardarán en el cliente. Se generan y se envían directamente.
En este artículo explicamos cómo activar el modo depuración en un cliente para visualizar y consultar el fichero XML que se envía al servidor. Esto nos servirá para solucionar posibles errores en el envío de datos de algún sensor.
Activar modo debug depuración en cliente Pandora FMS Agent
Desde el equipo que tenga instalado el agente de Pandora FMS, accederemos a la carpeta de instalación del cliente. En el caso de equipos con sistema operativo Windows suele ser:
C:\Program Files\pandora_agent
Y en el caso de equipos con Linux suele ser:
\etc\pandora\
Dentro de esta carpeta existirá el fichero: pandora_agent.conf.
Que es de texto plano sin formato y que podemos abrir con un editor cualquiera, como el notepad en Windows o el vi o el nano en Linux.
Abriremos este fichero pandora_agent.conf:
Elegiremos la aplicación con la que abriremos el fichero, por ejemplo «Bloc de notas»:
Buscaremos la línea:
# debug 1
Que cambiaremos a:
debug 1
Descomentándola, quitándole el símbolo de almohadilla. Guardaremos los cambios y reiniciaremos el servicio de Pandora FMS en el equipo cliente. en el caso de un equipo con Windows, desde la carpeta «scrpits» del agente de Pandora FMS, podemos ejecutar el fichero restart_pandora_agent.bat:
O bien desde los servicios de Windows, reiniciando el de Pandora FMS:
Para equipos con Linux, podemos reiniciar el servicio ejecutando el comando:
/etc/init.d/pandora_agent_daemon start
Consultar y revisar fichero XML que se envía al servidor de Pandora FMS desde un equipo con el agente
Una vez activado el modo depuración en un equipo con el agente de Pandora FMS, transcurridos unos minutos, podremos consultar el fichero XML que se envía al servidor, así como otros datos de acciones que se realizan.
Una copia del fichero XML que se envía al servidor mediante tentacle se guardará en la carpeta temp de la instalación del agente de pandora. Cada vez que el agente contacte con el servidor guardará un fichero XML:
Dichos ficheros pueden abrirse y consultarse con un editor de texto plano como notepad:
Analizando el fichero anterior, vamos que el agente de Pandora FMS genera un grupo por cada módulo/sensor/sonda, con este formato:
1 2 3 4 5 6 7 8 9 10 11 |
<module> <name><![CDATA[Espacio_Libre_Disco_C]]></name> <type><![CDATA[generic_data]]></type> <description><![CDATA[Espacio libre en disco C: (%)]]></description> <module_interval><![CDATA[1]]></module_interval> <min_critical><![CDATA[0]]></min_critical> <max_critical><![CDATA[10]]></max_critical> <min_warning><![CDATA[11]]></min_warning> <max_warning><![CDATA[20]]></max_warning> <data><![CDATA[80]]></data> </module> |
En el formato anterior pueden verse claramente los datos enviados:
Descripción del valor | Clave | Valor |
Nombre del módulo | name | Espacio_Libre_Disco_C |
Tipo de datos del módulo | type | generic_data |
Descripción del módulo | description | Espacio libre en disco C: (%) |
Valor | data | 80 |
Umbral para estado crítico mínimo | min_critical | 0 |
Umbral para estado crítico máximo | max_critical | 10 |
Umbral para estado warning mínimo | min_warning | 11 |
Umbral para estado warning máximo | max_warning | 20 |
Analizando el fichero anterior y buscando el módulo (sensor/sonda) que queramos revisar podremos saber si está generando bien los valores y si el formato de envío es el correcto.
Los datos anteriores que se envían al servidor son generados por los módulos que se establecen en el fichero pandora_agent.conf. El módulo (sensor/sonda) que genera el código XML anterior es:
1 2 3 4 5 6 7 8 9 10 11 |
# Espacio libre en disco C: (%) module_begin module_name Espacio_Libre_Disco_C module_type generic_data module_freepercentdisk C: module_description Espacio libre en disco C: (%) module_min_warning 11 module_max_warning 20 module_min_critical 0 module_max_critical 10 module_end |
Fichero pandora_debug.log de depuración de errores en el agente de Pandora FMS Agent
Cuando activamos el modo debug (depuración), además de generarse los ficheros XML anteriores, también se genera el fichero pandora_debug.log, que está en la carpeta de instalación del agente:
Dicho fichero contendrá los posibles errores en la ejecución de los módulos que obtienen los datos de los sensores establecidos en el fichero pandora_agent.conf. Un ejemplo del contenido de este fichero de depuración:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
2021-10-21 11:52:21 Run begin 2021-10-21 11:52:21 Run CPU Load 2021-10-21 11:52:23 Run TCP_Connections 2021-10-21 11:52:23 Executing: cmd.exe /c "netstat -an | find /c /v "estab"" 2021-10-21 11:52:23 Run plugin 2021-10-21 11:52:23 Executing: cmd.exe /c "cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\mem_percent_used.vbs"" 2021-10-21 11:52:23 Run plugin 2021-10-21 11:52:23 Executing: cmd.exe /c "cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\network.vbs"" 2021-10-21 11:52:25 Run plugin 2021-10-21 11:52:25 Executing: cmd.exe /c ""%PROGRAMFILES%\Pandora_Agent\util\autodiscover.exe" --default" 2021-10-21 11:53:03 Run PandoraFMS RAM 2021-10-21 11:53:03 Executing: cmd.exe /c "tasklist | grep Pandora | gawk "{ print $5 }" | tr -d "."" 2021-10-21 11:53:04 Run Espacio_Libre_Disco_C 2021-10-21 11:53:04 Run plugin 2021-10-21 11:53:04 Executing: cmd.exe /c "cscript.exe //B "%ProgramFiles%\Pandora_Agent\ps.vbs" BotComunidadBiker.exe" 2021-10-21 11:53:04 Error opening eHorus configuration file C:\Program Files\ehorus_agent\ehorus_agent.conf 2021-10-21 11:53:04 plugin getXML begin 2021-10-21 11:53:04 plugin getXML end 2021-10-21 11:53:04 PandoraFMS RAM getXML begin 2021-10-21 11:53:04 PandoraFMS RAM getXML end 2021-10-21 11:53:04 Espacio_Libre_Disco_C getXML begin 2021-10-21 11:53:04 Espacio_Libre_Disco_C getXML end 2021-10-21 11:53:04 Copying XML on C:\Program Files\pandora_agent\temp\20258dd1eb3ce1acef36.6088.data 2021-10-21 11:53:04 Remote copying XML C:\Program Files\pandora_agent\temp\20258da5def36.6088.data on server 192.168.1.200 2021-10-21 11:53:04 Command tentacle_client.exe -a 192.168.1.200 -p 41121 "C:\Program Files\pandora_agent\temp\202581acef36.6088.data" 2021-10-21 11:53:04 Successfuly copied XML file to server. 2021-10-21 11:53:04 Next execution on 300 seconds 2021-10-21 11:57:21 Run begin 2021-10-21 11:57:21 Run CPU Load ... |
En el contenido del fichero de depuración anterior podremos analizar y revisar posibles errores en la ejecución de los módulos. Vemos que va indicando cada módulo que ejecuta: CPU Load, TCP_Connections, PandoraFMS RAM, Espacio_Libre_Disco_C y los plugins, los distintos ficheros de script de línea de comandos (network.vbs , mem_percent_used.vbs, ps.vbs, …).
Incluso muestra el comando tentacle para el envío del fichero XML al servidor de Pandora FMS:
tentacle_client.exe -a 192.168.1.200 -p 41121 «C:\Program Files\pandora_agent\temp\202581acef36.6088.data
Este fichero nos será muy útil para revisar módulo que den error al ejecutarse, como en el ejemplo el módulo eHorus
Error opening eHorus configuration file C:\Program Files\ehorus_agent\ehorus_agent.conf
Analizar ejecución de módulo/sensor/sonda personalizado en equipo con Pandora FMS Agent
Si queremos revisar si un módulo que hemos agregado de forma manual, ejecutando algún comando en el equipo seguiremos los siguientes pasos.
En primer lugar, a modo de ejemplo, supongamos que queremos monitorizar si un programa (ejecutable) está abierto o no. Por ejemplo, si tenemos un programa que siempre debe estar ejecutado y queremos que Pandora FMS nos avise si no lo está podremos usar uno de los script que incluye el agente de Pandora en la carpeta: C:\Program Files\pandora_agent\util, en concreto el script VBS: ps.vbs. Dicho script tiene el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
' ps.vbs ' Returns the status of the given processes. ' ----------------------------------------- Option Explicit 'On Error Resume Next ' Variables Dim objWMIService, objItem, colItems, argc, ps, i ' Get and hash process information Set objWMIService = GetObject ("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery ("Select * from Win32_Process") Set ps = CreateObject("Scripting.Dictionary") For Each objItem in colItems if Not ps.Exists(objItem.Name) Then ps.Add objItem.Name, 1 End If Next ' Parse command line parameters and check each process argc = Wscript.Arguments.Count For i = 0 To argc - 1 Wscript.StdOut.WriteLine "<module>" Wscript.StdOut.WriteLine " <name><![CDATA[" & Wscript.Arguments(i) & "]]></name>" Wscript.StdOut.WriteLine " <description><![CDATA[Process " & Wscript.Arguments(i) & " status]]></description>" If argc = 0 Or ps.Exists(Wscript.Arguments(i)) Then Wscript.StdOut.WriteLine " <data><![CDATA[" & 1 & "]]></data>" Else Wscript.StdOut.WriteLine " <data><![CDATA[" & 0 & "]]></data>" End If Wscript.StdOut.WriteLine "</module>" Wscript.StdOut.flush Next |
Podremos usar este script o bien modificarlo a nuestro gusto. En nuestro caso lo usaremos de base y lo modificaremos, dejando:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Option Explicit Dim objWMIService, objItem, colItems, argc, ps, i Set objWMIService = GetObject ("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery ("Select * from Win32_Process") Set ps = CreateObject("Scripting.Dictionary") For Each objItem in colItems if Not ps.Exists(objItem.Name) Then ps.Add objItem.Name, 1 End If Next Wscript.StdOut.WriteLine "<module>" Wscript.StdOut.WriteLine " <name><![CDATA[Proceso_" & Wscript.Arguments(i) & "]]></name>" Wscript.StdOut.WriteLine " <type><![CDATA[generic_proc]]></type>" Wscript.StdOut.WriteLine " <description><![CDATA[Estado del proceso " & Wscript.Arguments(i) & "]]></description>" If argc = 0 Or ps.Exists(Wscript.Arguments(i)) Then Wscript.StdOut.WriteLine " <data><![CDATA[" & 1 & "]]></data>" Else Wscript.StdOut.WriteLine " <data><![CDATA[" & 0 & "]]></data>" End If Wscript.StdOut.WriteLine "</module>" Wscript.StdOut.flush |
Guardaremos el script con el nombre programa_abierto.vbs en la carpeta de instalación del agente de Pandora FMS, por ejemplo.
Una vez que tengamos el script personalizado a ejecutar, que debe generar los datos en el formato:
1 2 3 4 5 6 |
<module> <name><![CDATA[<strong>Nombre_Modulo</strong>]]></name> <type><![CDATA[<strong>tipo_de_dato</strong>]]></type> <description><![CDATA[<strong>Descripción</strong>]]></description> <data><![CDATA[<strong>Valor</strong>]]></data> </module> |
Es recomendable probarlo desde una ventana de MS-DOS. En el scaso de un script VBS (Visual Studio Script) lo podremos ejecutar usando cscript.exe. Desde una ventana de MS-DOS ejecutaremos:
cscript.exe /B «%ProgramFiles%\Pandora_Agent\programa_abierto.vbs» BotComunidadBiker.exe
Al fichero cscript.exe le hemos pasado como parámetro la ruta del fichero de script VBS generado anteriormente. A su vez, a este script le hemos pasado como parámetro el nombre del ejecutable que queramos monitorizar que esté abierto, en nuestro caso BotComunidadBiker.exe.
Revisaremos en la ventana de MS-DOS que devuelve los valores correctamente:
En este punto depuraremos el comando hasta que veamos que devuelve los datos correctos en formato XML para el envío con tentacle al servidor de Pandora FMS. En el ejemplo anterior vemos que devuelve «1» si el programa ejecutable está abierto y «0» si no lo está. Esto es lo que queremos para que Pandora FMS nos avise con una alerta si el proceso está cerrado.
Ahora agregaremos el módulo en el fichero pandora_agent.conf, agregando la siguiente línea:
module_plugin cscript.exe //B «%ProgramFiles%\Pandora_Agent\programa_abierto.vbs» BotComunidadBiker.exe
Vemos que hemos agreado doble barra // al parámetro B para que lo reconozca correctamente:
Guardaremos los cambios y reiniciaremos el servicio de Pandora FMS como hemos explicado al principio de este artículo, para que ejecute cuanto antes el nuevo módulo agregado.
Una vez transcurridos unos minutos, con el modo debug activado, comprobaremos tanto el fichero de debug pandora_debug.log que se ha ejecutado correctamente el script:
Por otro lado, revisaremos el XML de la carpeta temp para asegurarnos de que los datos del módulo se envían correctamente:
Por último, comprobaremos que el módulo/sensor/sonda aparece correctamente en en servidor de Pandora FMS:
Una vez que concluyamos con el proceso de depuración y revisión, es muuy recomendable desactivar el modo de depuración, cambiando el valor del parámetro debug a 0:
Para que se apliquen los cambios, reiniciaremos el servicio de Pandora FMS. Incluso podemos eliminar los ficheros XML generados en la carpeta temp.