Tabla de Contenidos

Configuración de los Agentes Software

Agentes Software de Pandora FMS

Qué es un Agente Software

Como su nombre indica, son pequeñas piezas de software que se instalan en los sistemas operativos y permanecen ejecutándose en ellos para extraer información de monitorización y enviarla al servidor de Pandora FMS regularmente.

Utilizan los comandos y herramientas propias del sistema operativo en que están instalados para obtener la información. Conforman los datos en un fichero en formato XML y los envían al servidor de datos de Pandora FMS, que los procesa y almacena en la base de datos.

Cada uno de los chequeos individuales es denominado Módulo .

Introducción a la configuración del Agente Software

El funcionamiento del Agente Software está determinado por su fichero de configuración, llamado pandora_agent.conf, ubicado en el directorio de instalación (valor predeterminado) %ProgramFiles%\pandora_agent en sistemas MS Windows®, y en /etc en sistemas GNU/Linux®. El fichero de configuración contiene todos los parámetros de funcionamiento y los módulos de ese Agente.

Parámetros generales del Agente

Los parámetros generales de configuración del Agente Software aparecen definidos en esta sección. La mayoría son comunes para sistemas MS Windows® y GNU/Linux®.

La codificación del archivo de configuración del agente es UTF-8 tanto en sistemas GNU/Linux® como MS Windows®. Si realiza ediciones a mano de este fichero verifique que la codificación es correcta antes de sobreescribirlo. Si la codificación no es UTF-8 y usted utiliza símbolos (como tildes o símbolos extendidos), el Agente Software interpretará erróneamente estos, no pudiendo garantizar una correcta interpretación de su configuración.

La primera vez que se reciben datos del Agente Software se guarda toda la información en la base de datos. Para sucesivos envíos de información (y dependiendo si está habilitado el modo aprendizaje) sólo se actualizarán los siguientes campos del XML: version, timestamp (fecha) y os_version (versión de sistema operativo), así como los siguientes parámetros del archivo de configuración gis_exec, latitude, longitude, altitude, parent_agent_name, timezone_offset, address, custom_field

Usted puede encontrar más información acerca del formato de los archivos XML de Pandora FMS en este enlace. También puede acceder a la generación de datos de prueba (herramientas de análisis de capacidad).

server_ip

Dirección IP o nombre del servidor de Pandora FMS al que se enviarán los datos.

server_path

Ruta del servidor donde este recibe los ficheros de datos enviados por los agentes. Por defecto /var/spool/pandora/data_in.

temporal

Ruta donde el Agente Software almacena los ficheros de datos antes de que sean enviados al servidor y eliminados localmente.

description

Envía la descripción del Agente Software en el XML, y Pandora FMS importa esta descripción cuando crea el Agente Lógico.

group

Si existe un grupo con el nombre indicado en este parámetro, el Agente se creará dentro de este grupo a no ser que el servidor fuerce la creación de todos los agentes en un grupo determinado.

temporal_min_size

Si el espacio libre (en megabytes) de la partición en la que se encuentra el directorio temporal es menor que este valor, no se siguen generando paquetes de datos. De este modo se evita que se llene el disco si por alguna razón se pierde la conexión con el servidor durante un intervalo de tiempo prolongado.

logfile

Ruta del log del Agente de Pandora FMS.

interval

En segundos, tiempo de muestreo del agente. Cada vez que se complete este intervalo el Agente recogerá información y la enviará al servidor de Pandora FMS.

disable_logfile

Solo para MS Windows®: Inhabilita la escritura en pandora_agent.log.

debug

Si se encuentra activo ( 1 ), los ficheros de datos del Agente son almacenados y renombrados en el directorio temporal y no son eliminados tras enviarse al servidor, pudiendo abrir los archivos XML y analizar su contenido.

agent_name

Permite establecer un nombre personalizado. Si no se encuentra habilitado, el nombre del agente será el hostname de la máquina.

agent_name_cmd

Versión 5.1 SP2 o superior.

Define el nombre del Agente utilizando un comando externo. Si agent_name_cmd está definido, agent_name se ignora. El comando deberá devolver el nombre del agente por STDOUT. Si devuelve mas de una línea solo se utilizará la primera.

agent_alias_cmd

Versión NG 7 o superior.

Define el alias del Agente utilizando un comando externo. Si agent_alias_cmd está definido, agent_alias se ignora. El comando deberá devolver el nombre del agente por STDOUT. Si devuelve mas de una línea solo se utilizará la primera.

address

Esta es la dirección IP asociada al Agente Software. Puede ser una IPv4 con el formato X.X.X.X, un nombre de dominio como localhost o auto. Si es una IP o nombre de dominio, esta se añadirá a la colección de direcciones del Agente y se establecerá como principal. Si es auto, se obtendrá la dirección IP de la máquina y se añadirá al agente del mismo modo que en el caso anterior.

encoding

Instala el tipo de codificación del sistema local, como por ejemplo ISO-8859-15, o UTF-8.

server_port

Puerto en el que el servidor Tentacle de Pandora FMS escucha para recibir los archivos de datos, 41121 por defecto.

transfer_mode

Modo de transferencia de los archivos de datos al servidor de Pandora FMS. Valor por defecto tentacle.

transfer_timeout

Versión 6.0 o superior.

Tiempo de expiración (timeout) para la transferencia de ficheros; si se supera el número de segundos indicado sin completar la transferencia, esta será cancelada.

server_pwd

Contraseña del servidor para la autenticación: Específica para el FTP de Windows® y para el modo de transferencia Tentacle, aunque la contraseña en este último es opcional.

server_ssl

Específica para el modo de transferencia Tentacle. Permite habilitar ( 1 ) o deshabilitar ( 0 ) el cifrado de las conexiones mediante SSL. Puede obtener más información acerca de la comunicación segura con Tentacle en esta sección.

server_opts

Para añadir opciones adicionales al ejecutar el cliente de Tentacle en la transferencia de archivos. Utilizado para configuraciones avanzadas de Tentacle con opciones de seguridad.

Desde la versión 3.2 de los agentes, el cliente de Tentacle soporta una opción para poder usar un proxy HTTP para enviar los datos al servidor. Este proxy HTTP debe tener habilitado el método CONNECT. Para poder usar la salida a través de un proxy, use la siguiente opción (por ejemplo):

server_opts -y user:[email protected]:8080

Esta opción fuerza al cliente de Tentacle a enviar los datos a través de un proxy situado en proxy.inet y que usa el puerto 8080, usando el usuario user y el contraseña pass para autenticarse en dicho proxy. Si por ejemplo, es preciso usar un proxy sin autenticación, en un servidor en 192.168.1.2 y con el puerto 9000, la opción sería así:

server_opts -y 192.168.1.2:9000

Puede obtener más información acerca de la comunicación segura con Tentacle en esta sección.

delayed_startup

Deshabilitado por defecto. Tiempo de espera (segundos o minutos) hasta que el agente empieza a funcionar una vez iniciado. Para todos los Agentes Software excepto en MS Windows®.

startup_delay

Deshabilitado por defecto. Tiempo de espera, en segundos, hasta que el agente empieza a funcionar una vez iniciado. Solamente para MS Windows®.

pandora_nice

Sólo está disponible para agentes Unix/Linux. Este parámetro permite especificar la prioridad que el proceso del Agente de Pandora FMS tendrá en el sistema.

autotime

Si está habilitado ( 1 ) envía un estampado de tiempo (timestamp) de ejecución especial (AUTO) que hace que el servidor utilice la fecha y hora local del servidor para establecer la hora de los datos, ignorando la hora enviada por el Agente. Esto es necesario en aquellos agentes que por la razón que sea, tienen una hora incorrecta o muy diferente de la del servidor.

cron_mode

Con este parámetro es posible hacer que el Agente use el crontab de Linux® para ejecutarse en un intervalo determinado en vez de usar el propio sistema interno del Agente para ejecutarse cada cierto tiempo. Desactivado por defecto ( 0 ).

remote_config

Versión Enterprise.

Habilita ( 1 ) o deshabilita ( 0 ) la configuración remota de los agentes. Su funcionamiento solo se permite con el modo de transferencia Tentacle.

xml_buffer

Si se habilita ( 1 ), el Agente Software guardará en su directorio temporal los ficheros XML que no haya podido enviar al servidor en caso de un problema de conectividad. Serán enviados cuando se restablezcan las comunicaciones.

timezone_offset

El Agente Software bien puede instalar su timezone offset con el servidor. Esto le permite al servidor hacer un desplazamiento de la hora recogida por el Agente, de forma que concuerde con la hora local del servidor.

 # Timezone offset: Difference with the server timezone
 timezone_offset 3

Se calcula restándole la zona horaria del agente a la zona horaria del servidor. Por ejemplo, si el servidor está en la zona horaria UTC+1 y el agente está en la zona horaria UTC-5, timezone_offset debería ser 6 = 1 - (-5).

parent_agent_name

Indica el padre del Agente Software. Debe ser el nombre de un Agente existente en Pandora FMS.

agent_threads

Sólo disponible para agentes Unix/Linux: Número de hilos que lanzará el Agente para ejecutar módulos en paralelo. Por defecto, los Módulos se ejecutan uno tras otro sin lanzar ningún hilo adicional. Ejemplo:

 # Number of threads to execute modules in parallel
 agent_threads 4

include

include <file>

Permite incluir un fichero (file) de configuración adicional. Este archivo puede incluir Módulos y colecciones adicionales a las del archivo principal. El fichero lo podrán subir aquellos usuarios que tengan permisos de escritura sobre Agentes ( "AW").

broker_agent

broker_agent <broker_name>

Habilita la funcionalidad de Agente Broker. Para activarlo únicamente es necesario quitar de los comentarios el parámetro e indicar el nombre (<broker_name>) que se asignará al Agente Broker.

pandora_user

pandora_user <user>

Este parámetro es opcional y permitirá ejecutar el Agente con el usuario del sistema ( <user> ) que especifique. Este usuario deberá contar con los permisos para poder ejecutar el Agente y sus recursos asociados.

custom_id

Versión 5.x o superior.

Identificador personalizado del Agente para aplicaciones externas.

url_address

Versión 5.X o superior.

URL personalizada para abrirla desde el Agente en la Consola.

custom_fieldX_name

Versión 5.X o superior.

Nombre de un campo personalizado de Agentes que ya exista en el sistema. Si no existe, se ignorará. Ejemplo:

custom_field1_name Model

custom_fieldX_value

Versión 5.X o superior.

Valor para el campo personalizado custom_fieldX_name definido en el parámetro anterior. Ejemplo:

custom_field1_value C1700

macro

Versión 5.1 o superior sobre Unix/Linux.

macro<macro> <value>

Define una macro de ejecución local que se puede utilizar en la definición de un Módulo. Estas macros se utilizan en el sistema de la Metaconsola y en el sistema de componentes de Módulos locales para “abstraer” la dificultad de usar un Módulo editando directamente el código, presentando a un usuario menos avanzado, una interfaz local que permita “rellenar” valores. Estos valores se emplean por debajo, usando un sistema de macros, relativamente similar al sistema de macros de los plugins locales.

Las macros de ejecución locales comienzan por _fieldx_

Ejemplo:

 module_begin
 module_name Particion_opt
 module_type generic_data
 module_exec df -kh _field1_ | tail -1 |  awk '{ print $5}' | tr -d "%"
 module_macro_field1_ /opt
 module_end

group_password

Versión 6.0 SP5 o superior.

group_password <password>

Contraseña (password) para el grupo del Agente. Si el grupo no está protegido por contraseña debe dejar esta línea como comentario.

ehorus_conf

Versión NG 7 o superior.

ehorus_conf <path>

Ruta absoluta (path) a un fichero de configuración válido de un agente de eHorus. El Agente creará un campo personalizado llamado eHorusID que contiene la clave de identificación del agente de eHorus.

transfer_mode_user

Versión NG 7.0 OUM713 o superior.

transfer_mode_user <user>

Usuario (user) de los ficheros copiados en el modo de transferencia local. En las carpetas de la Consola este usuario debe tener permisos de lectura y escritura para que funcione correctamente la configuración remota. Por defecto es apache.

secondary_groups

Versión NG 7.0 OUM721 o superior.

secondary_groups <group name1>, <group name2>, ... <group nameN>

Nombre de los grupos secundarios (group name) asignados al Agente. Se pueden especificar varios grupos secundarios separados por comas. Si alguno de los grupos no existe en el servidor al que se envía la información, no se asignará ese grupo, pero no se verá afectada la creación del Agente.

standby

Versión NG 7.0 OUM728 o superior.

standby <1|0>

Si un Agente tiene modo de espera habilitado ( standby 1 ), el Agente no realizará ningún chequeo ni enviará ni generará ningún XML. Esta directiva de configuración tiene sentido en instalaciones Enterprise donde hay configuración remota. Gracias a ello, se puede silenciar un Agente a voluntad con solo deshabilitarlo.

El modo debug sobreescribe esta funcionalidad y el Agente se ejecuta normalmente.

Servidor Secundario

Se puede definir un servidor secundario al que se le enviarán los datos en dos posibles situaciones dependiendo de la configuración:

  • on_error: Envía datos al servidor secundario solo si no puede enviarlas al primario.
  • always: Siempre envía datos al servidor secundario, independientemente si puede contactar o no con el servidor principal.

Ejemplo de configuración:

 secondary_server_ip     192.168.1.123
 secondary_server_path   /var/spool/pandora/data_in
 secondary_mode          on_error
 secondary_transfer_mode tentacle
 secondary_server_port   41121

Servidor UDP

Tenga presente que UDP es por naturaleza inseguro (pero eficiente para enviar mensajes sin comprometer una respuesta cierta).

El Agente Software de Pandora FMS puede configurarse para la escucha de comandos remotos. Este servidor escucha en un puerto UDP especificado por el usuario, y permite recibir órdenes desde un sistema remoto, habitualmente desde la Consola de Pandora FMS, mediante la ejecución de alertas en el servidor.

Para configurar el servidor remoto UDP, existen las siguientes opciones en su fichero de configuración pandora_agent.conf>

  • udp_server: Para activar el servidor UDP establecer el valor a 1. Por defecto está desactivado.
  • udp_server_port: Número de puerto de escucha.
  • udp_server_auth_address: Direcciones IP autorizadas para enviar órdenes. Para especificar varias direcciones, hay que separarlas por comas. Si se configura con 0.0.0.0, acepta órdenes de cualquier dirección.

Aunque puede establecerse a 0.0.0.0 para que acepte desde todos los orígenes, dicha práctica no es recomendada. Si tiene varios Servidores PFMS y/o utiliza IPv6 puede colocar diferentes direcciones IP separadas por comas. Por ejemplo si tiene en IPv6:2001:0db8:0000:130F:0000:0000:087C:140B y su abreviatura es 2001:0db8:0:130F::87C:140Butilice ambas separadas por comas.

  • process_<name>_start <command>: Comando que arrancará un proceso definido por el usuario.
  • process_<name>_stop <command>: Comando que parará el proceso.
  • service_<name> 1: Permite que el servicio <name> sea parado o arrancado remotamente desde el servidor UDP.

Ejemplo de configuración:

 udp_server 1
 udp_server_port 4321
 udp_server_auth_address 192.168.1.23
 process_firefox_start firefox
 process_firefox_stop killall firefox 
 service_messenger 1 

El servidor acepta los siguientes comandos:

<START|STOP> SERVICE <service name>

Inicia o detiene un servicio especificado (service name).

<START|STOP> PROCESS <process name>

Inicia o finaliza un proceso especificado (process name).

REFRESH AGENT <agent name>

Fuerza una ejecución del Agente especificado (agent name), refrescando los datos.

Por ejemplo:

 STOP SERVICE messenger
 START PROCESS firefox
 REFRESH AGENT 007

Existe un script en el servidor, en /util/udp_client.pl que es el usado por Pandora FMS Server como comando de una alerta, para arrancar procesos, o servicios. Tiene esta sintaxis:

./udp_client.pl <address> <port> <command>

Por ejemplo, para reiniciar un agente:

./udp_client.pl 192.168.50.30 41122 "REFRESH AGENT"

Para más información, vea el capítulo de configuración de alertas.

Definición de los Módulos

Los Módulos de ejecución local se definen en el fichero de configuración pandora_agent.conf. La sintaxis general es la siguiente:

 module_begin
 module_name <module name>
 module_type generic_data
 module_exec <local command>
 module_end

Donde module name es el nombre del Módulo y local command el comando a ejecutar. Existen multitud de opciones adicionales para los Módulos, en este ejemplo únicamente se ha utilizado las líneas comunes y obligatorias para la mayoría de casos.

Puede obtener más información en los vídeo tutoriales:

En las siguientes secciones se trata cada uno de ellos en detalle.

Elementos comunes de todos los Módulos

Los campos del Módulo (salvo el dato del Módulo, la descripción y la información extendida) sólo se actualizan en la creación del Módulo, nunca se actualizarán una vez que el Módulo ya existe.

module_begin

Etiqueta de inicio de un Módulo. Obligatorio.

module_name
module_name <name>

Nombre (name) del Módulo. Dicho nombre debe ser único y singular en el Agente. Obligatorio.

module_type
module_type <type>

Tipo (type) de datos que devolverá el Módulo. Obligatorio. Los tipos disponibles son:

  • Numérico ( generic_data ): Datos numéricos sencillos, con coma flotante o enteros.
  • Incremental ( generic_data_inc ): Dato numérico igual a la diferencia entre el valor actual y el valor anterior dividida por el número de segundos transcurridos. Cuando esta diferencia es negativa, se reinicia el valor, esto significa que cuando la diferencia vuelva a ser positiva de nuevo se tomará el valor anterior siempre que el incremento vuelva a dar un valor positivo.
  • Absolute incremental ( generic_data_inc_abs ): Dato numérico igual a la diferencia entre el valor actual y el valor anterior, sin realizar la división entre el número de segundos transcurridos, para medir incremento total en lugar de incremento por segundo. Cuando esta diferencia es negativa, se reinicia el valor, esto significa que cuando la diferencia de nuevo vuelva a ser positiva, se empleará el último valor desde el que el actual incremento obtenido da positivo.
  • Alfanumérico ( generic_data_string ): Recoge cadenas de texto alfanuméricas.
  • Booleanos ( generic_proc ): Para valores que solo pueden ser correcto o afirmativo (1) o incorrecto o negativo (0). Útil para comprobar si un equipo está vivo, o un proceso o servicio está corriendo. Un valor negativo (0) trae preasignado el estado crítico, mientras que cualquier valor superior se considerará correcto.
  • Alfanumérico asíncrono ( async_string ): Para cadenas de texto de tipo asíncrono. La monitorización asíncrona depende de eventos o cambios que pueden ocurrir o no, por lo que este tipo de Módulos nunca están en estado desconocido.
  • Booleano asíncrono ( async_proc ): Para valores booleanos de tipo asíncrono.
  • Numérico asíncrono ( async_data ): Para valores numéricos de tipo asíncrono.
module_min
module_min <value>

Valor (value) mínimo que el Módulo debe devolver para que sea aceptado. En caso contrario será descartado por el servidor.

module_max
module_max <value>

Valor (value) máximo que el Módulo debe devolver para que sea aceptado. En caso contrario será descartado por el servidor.

module_min_warning
module_min_warning <value>

Valor (value) mínimo del umbral de advertencia warning.

module_max_warning
module_max_warning <value>

Valor (value) máximo del umbral de advertencia warning.

module_min_critical
module_min_critical <value>

Valor (value) mínimo del umbral crítico critical.

module_max_critical
module_max_critical <value>

Valor (value) máximo del umbral crítico critical.

module_disabled
module_disabled <0|1>

Indica si el Módulo esta habilitado ( 0 ) o deshabilitado ( 1 ).

module_min_ff_event
module_min_ff_event <value>

Valor (value) de la protección flip flop para falsos positivos. Será necesario que se produzcan el número de cambios de estado indicados en este valor para que el módulo modifique visualmente su estado en la Consola web.

module_each_ff

Versión 6.0 SP4 o superior.

module_each_ff <0|1>

Si está habilitado ( 1 ), en vez de usar module_min_ff_event se utilizarán los umbrales flip flop por estado:

  • module_min_ff_event_normal.
  • module_min_ff_event_warning.
  • module_min_ff_event_critical.
module_min_ff_event_normal

Versión 6.0 SP4 o superior.

module_min_ff_event_normal <value>

Valor (value) de la protección flip flop para paso a estado normal.

module_min_ff_event_warning

Versión 6.0 SP4 o superior.

module_min_ff_event_warning <value>

Valor (value) de la protección flip flop para paso a estado warning.

module_min_ff_event_critical

Versión 6.0 SP4 o superior.

module_min_ff_event_critical <value>

Valor (value) de la protección flip flop para paso a estado critical.

module_ff_timeout

Versión 6.0 SP4 o superior.

module_ff_timeout <seconds>

Reinicia el contador de flip flop threshold después del número de segundos dado. Esto implica que el número de cambios de estado determinado en module_min_ff_event deberá ocurrir en un intervalo de module_ff_timeout segundos antes de que el estado cambie en la consola a nivel visual.

module_ff_type

Versión NG 734 o superior.

module_ff_type <value>

Se trata de una opción avanzada del Flip Flop para el control de estado de un Módulo. Mediante Keep counters establezca unos valores de contador para pasar de un estado a otro dependiendo, en lugar del valor, del estado del módulo con el valor recibido.

Indica si Keep counters esta habilitado ( 1 ) o deshabilitado ( 0 ).

module_description
module_description <text>

Texto libre con información sobre el Módulo.

module_interval
module_interval <factor>

Intervalo individual de Módulo. Este valor es un factor multiplicador del intervalo del agente, no un tiempo libre. Por ejemplo, si el Agente tiene intervalo de 300 segundos (5 minutos) y necesita un módulo que sea procesado solamente cada 15 minutos, debe añadir esta línea:

module_interval 3

De esta manera el Módulo será procesado cada 300 segundos x 3 = 900 segundos (15 minutos).

Para que el module_interval funcione en Agentes Broker, debe tener el mismo intervalo que el del Agente del cual proviene. En caso contrario, puede fallar su funcionamiento.

module_timeout
module_timeout <secs> 

En segundos, tiempo máximo permitido para la ejecución del Módulo. Si se supera este tiempo antes de haber finalizado su ejecución, será interrumpida.

module_postprocess
module_postprocess <factor> 

Valor numérico por el que se multiplicará el dato devuelto por el Módulo. Útil para realizar conversiones de unidades.

module_save
module_save <var name>

Almacena el valor devuelto por el Módulo en una variable con el nombre indicado en este parámetro ( <var name> ). Este valor podrá ser utilizado posteriormente en otros Módulos.

Ejemplo en Unix/Linux:

 module_begin
 module_name echo_1
 module_type generic_data
 module_exec echo 41121
 module_save ECHO_1
 module_end

Almacenará el valor “41121” en la variable “ECHO_1”.

 module_begin
 module_name echo_2
 module_type generic_data
 module_exec echo $ECHO_1
 module_end

Este segundo Módulo mostrará el contenido de la variable “$ECHO_1”, siendo “41121”.

En Agentes Software en Windows® la sintaxis del Módulo debe formarse encerrando la variable entre símbolos de porcentaje %var% en lugar de $var. Siguiendo el ejemplo dado:

 module_begin
 module_name echo_2
 module_type generic_data
 module_exec echo %ECHO_1%
 module_end
module_crontab

Desde la versión 3.2 se pueden programar los Módulos para que se ejecuten en determinadas fechas.

Para ello hay que definir el module_crontab utilizando un formato similar al del fichero crontab.

module_crontab <minuto> <hora> <día> <mes> <día de la semana>

Siendo:

  • Minuto 0-59.
  • Hora 0-23 .
  • Día del mes 1-31
  • Mes 1-12 .
  • Día de la semana 0-6 (0 es Domingo) .

También es posible especificar intervalos utilizando el carácter - como separador.

Por ejemplo, para que un módulo se ejecute todos los lunes entre las 12 y las 15 puede utilizar la siguiente configuración:

 module_begin
 module_name crontab_test
 module_type generic_data
 module_exec script.sh
 module_crontab * 12-15 * * 1
 module_end

Para ejecutar un comando cada hora, a la hora y 10 minutos:

 module_begin
 module_name crontab_test3
 module_type generic_data
 module_exec script.sh
 module_crontab 10 * * * *
 module_end
module_condition

module_condition <operación> <comando>

Permite definir acciones que serán ejecutadas por el Agente en función del valor devuelto por el Módulo. Solo disponible para valores numéricos. La sintaxis es la siguiente:

  • > [valor]: Ejecuta el comando cuando el valor del Módulo es mayor que el valor dado.
  • < [valor]: Ejecuta el comando cuando el valor del Módulo es menor que el valor dado.
  • = [valor]: Ejecuta el comando cuando el valor del Módulo es igual al valor dado.
  • != [valor]: Ejecuta el comando cuando el valor del Módulo es distinto al valor dado.
  • =~ [expresion|regular]: Ejecuta el comando cuando el valor del módulo concuerda con la expresión regular dada.
  • (valor, valor): Ejecuta el comando cuando el valor del módulo está comprendido entre los valores dados.

Se pueden especificar múltiples condiciones para un mismo módulo. En el caso siguiente se ejecutará script_1.sh si el valor devuelto por el módulo se encuentra entre 1 y 3, y se ejecutará script_2.sh si el valor del módulo es superior a 5.5, por lo que en este caso, siendo el valor devuelto en la línea module_exec 2.5, se ejecutará únicamente la primera condición script_1.sh>

 module_begin
 module_name condition_test
 module_type generic_data
 module_exec echo 2.5
 module_condition (1, 3) script_1.sh
 module_condition > 5.5 script_2.sh
 module_end

Ejemplos aplicados a posibles casos reales:

 module_begin
 module_name MyProcess
 module_type generic_data
 module_exec tasklist | grep MyProcess | wc -l
 module_condition > 2 taskkill /IM MyProcess* /F
 module_end
 module_begin
 module_name Service_Spooler
 module_type generic_proc
 module_service Spooler
 module_condition = 0 net start Spooler
 module_end
  • Nota: En el sistema operativo Windows® es recomendable anteponer cmd.exe /c al comando para asegurar que se ejecuta de forma adecuada. Por ejemplo:
 module_begin
 module_name condition_test
 module_type generic_data
 module_exec echo 5
 module_condition (2, 8) cmd.exe /c script.bat
 module_end
module_precondition

module_precondition <operación> <comando>

Permite determinar si se ejecuta o no el Módulo dependiendo del resultado de una ejecución dada. Sintaxis:

  • > [valor]: Ejecuta el comando cuando el valor del módulo es mayor que el valor dado.
  • < [valor]: Ejecuta el comando cuando el valor del módulo es menor que el valor dado.
  • = [valor]: Ejecuta el comando cuando el valor del módulo es igual al valor dado.
  • != [valor]: Ejecuta el comando cuando el valor del módulo es distinto al valor dado.
  • =~ [expresion|regular]: Ejecuta el comando cuando el valor del módulo concuerda con la expresión regular dada.
  • (valor, valor): Ejecuta el comando cuando el valor del módulo está comprendido entre los valores dados.

En el siguiente ejemplo solo se ejecutará el Módulo (monitoring_variable.bat) si el resultado de la ejecución indicada en la precondición se encuentra entre 2 y 8. En este caso el resultado de la ejecución indicada en la línea module_precondition es 5, valor que se encuentra entre 2 y 8, por lo que se ejecutará correctamente monitoring_variable.bat:

 module_begin
 module_name Precondition_test1
 module_type generic_data
 module_precondition (2, 8) echo 5
 module_exec monitoring_variable.bat
 module_end

Al igual que con las postcondiciones es posible poner varias, y el módulo sólo se ejecutará si se cumplen todas:

 module_begin
 module_name Precondition_test2
 module_type generic_data
 module_precondition (2, 8) echo 5
 module_precondition < 3 echo 5
 module_exec monitoring_variable.bat
 module_end
  • NOTA: En el sistema operativo Windows es recomendable anteponer cmd.exe /c al comando para asegurar que se ejecuta de forma adecuada. Por ejemplo:
 module_begin
 module_name Precondition_test3
 module_type generic_data
 module_precondition (2, 8) cmd.exe /c script.bat
 module_exec monitoring_variable.bat
 module_end
module_unit

Versión 5.x o superior.

module_unit <string>

Unidades expresada en una cadena de texto (string) para mostrar junto al valor obtenido por el Módulo. Ejemplo:

module_unit %
module_group

Versión 5.X o superior.

module_group <value>

Permite indicar el grupo de Módulos (value) al que será asignado el Módulo. Ejemplo:

module_group Networking
module_custom_id

Versión 5.X o superior.

module_custom_id <value>

Esta directiva es un identificador personalizado del Módulo. Ejemplo:

module_custom_id host101
module_str_warning

Versión 5.X o superior.

module_str_warning <value>

Permite indicar una expresión regular para definir el umbral de advertencia warning en Módulos de tipo alfanumérico (string). Ejemplo:

module_str_warning .*NOTICE.*
module_str_critical

Versión 5.X o superior.

module_str_critical <value>

Permite indicar una expresión regular para definir el umbral crítico critical en Módulos de tipo alfanumérico (string). Ejemplo:

module_str_critical .*ERROR.*
module_warning_instructions

Versión 5.x o superior.

module_warning_instructions <value>

A nivel informativo, indica instrucciones que se mostrarán en el evento generado por el Módulo al pasar a estado de advertencia warning.

Ejemplo para mostrar mensaje indicando el subir la prioridad en una incidencia:

module_warning_instructions Raise advocacy priority
module_critical_instructions

Versión 5.x o superior.

module_critical_instructions <value>

A nivel informativo, indica instrucciones que se mostrarán en el evento generado por el módulo al pasar a estado critical.

Ejemplo de un mensaje para alertar al departamento de sistemas:

module_critical_instructions Call the systems department
module_unknown_instructions

Versión 5.x o superior.

module_unknown_instructions <value>

A nivel informativo, indica instrucciones que se mostrarán en el evento generado por el módulo al pasar a estado desconocido unknown.

Ejemplo de mensaje para abrir incidencia:

module_unknown_instructions Open incident
module_tags

Versión 5.x o superior.

module_tags <value>

Etiquetas o tags que se deseen asignar al Módulo, separadas por comas.

Ejemplo:

module_tags tag1,tag2,tag3
module_warning_inverse

Versión 5.x o superior.

module_warning_inverse <value>

Permite activar ( 1 ) el intervalo inverso para el umbral de advertencia warning.

Ejemplo:

module_warning_inverse 1
module_critical_inverse

Versión 5.x o superior.

module_critical_inverse <value> 

Permite activar ( 1 ) el intervalo inverso para el umbral crítico critical.

Ejemplo:

module_critical_inverse 1
module_native_encoding

Versión 5.x o superior sobre Win32 únicamente.

module_native_encoding <value>

Este token de configuración solo afecta a los Módulos que se ejecutan mediante una directiva de comandos, es decir, hay un module_exec presente.

MS Windows® maneja tres codificaciones para sus procesos: la codificación de la línea de comandos (OEM), la codificación del sistema (ANSI) y UTF-16. Estas codificaciones coinciden en los caracteres básicos, pero difieren en aquellos menos comunes, como podrían ser las tildes. Con este token, el agente de Pandora FMS convierte la salida del comando a la codificación especificada en el encoding del archivo de configuración.

module_native_encoding tiene cuatro valores válidos:

  • module_native_encoding OEM: Para la codificación de la línea de comandos.
  • module_native_encoding ANSI: Para la codificación del sistema.
  • module_native_encoding UTFLE: Para UTF-16 little-endian.
  • module_native_encoding UTFBE: Para UTF-16 big-endian.

Si no aparece module_native_encoding, no se realizará ninguna recodificación.

module_quiet

Versión 5.x o superior.

module_quiet <value>

Si se encuentra habilitado ( 1 ) el Módulo estará en modo silencioso: no generará eventos ni disparará alertas, tampoco almacenará histórico de datos.

Ejemplo:

module_quiet 1
module_ff_interval

Versión 5.x o superior.

module_ff_interval <value>

Permite indicar un umbral Flip Flop en el Módulo, por ejemplo:

module_ff_interval 2
module_macro
module_macro<macro> <value> 

Solo aplicable en componentes locales desde la Consola. No tiene utilidad en el fichero de configuración.

module_alert_template
module_alert_template <template_name> 

Esta macro asigna al Módulo creado la plantilla de alerta correspondiente al nombre introducido como parámetro (ver Plantillas de alerta).

Ejemplo:

 <module>
 <name><![CDATA[CPU usage]]></name>
 <type>generic_data</type>
 <module_interval>1</module_interval>
 <min_critical>91</min_critical>
 <max_critical>100</max_critical>
 <min_warning>70</min_warning>
 <max_warning>90</max_warning>
 <alert_template><![CDATA[Critical condition]]></alert_template>
 <data><![CDATA[92]]></data>
 </module>
module_end

Etiqueta de final de Módulo. Es obligatorio.

Directivas específicas para obtener información

A continuación se describen las directivas específicas que se pueden especificar en cada Módulo para obtener información como tal. En cada Módulo solo se puede utilizar uno de estos tipos.

module_exec
module_exec <comando>

Línea general de ejecución de comando. Se debe especificar la ejecución deseada para obtener la información en una única línea.

En GNU/Linux, el comando se ejecutará mediante el intérprete de comandos por defecto. El intérprete por defecto viene determinado por el enlace simbólico de /bin/sh. Normalmente el enlace apunta a bash, pero en sistemas como Ubuntu no es así (en ese caso apunta a dash). Por ello, puede ocurrir que se pruebe un comando en la terminal y luego dé error cuando el Agente Software lo ejecute. Una solución que funcionará en la mayoría de ocasiones será forzar la ejecución del comando en bash de la siguiente forma:

module_exec bash -c "<command>"

Si la ejecución del comando devuelve un código de error (return code) diferente de 0, se interpretará que el comando da error y se descartará el dato obtenido.

Para un Agente sobre Windows® existen más directivas para obtener datos, éstas se describen a continuación.

module_service
module_service <service> 

Comprueba si un determinado servicio se está ejecutando en la máquina.

En MS Windows

Si el nombre del servicio contiene espacios en blanco debe utilizar entrecomillado “ ”.

 module_begin
 module_name Service_Dhcp
 module_type generic_proc
 module_service Dhcp
 module_description Service DHCP Client
 module_end

El servicio se identifica con el nombre corto del servicio ( Service name ), tal como aparece en el gestor de servicios de Windows.

Modo asíncrono

Pandora FMS, por lo general, ejecuta una batería de pruebas (cada una de ellas definida en un Módulo) cada X segundos ( por defecto 300 segundos = 5 minutos) de forma que si un servicio se cae justo después de una ejecución de Pandora FMS, tardará al menos otros 300 segundos en saber que se ha caído. Los módulos asíncronos hacen que Pandora FMS notifique instantáneamente la caída de ese servicio. A esto le llamamos modo de operación asíncrono. Para ello basta con agregar la directiva.

module_async yes

Esta funcionalidad no está soportada en los Agentes Broker.

En las versiones de Windows Home Edition® esta funcionalidad asíncrona no está soportada y, solamente en estas versiones, el Agente de Pandora FMS realiza una consulta periódica para saber si el servicio está corriendo o no. Esto puede consumir bastantes recursos así que se recomienda usar la versión síncrona si se monitoriza un número elevado de servicios.

Watchdog de servicios

Existe un modo de vigilancia o watchdog para los servicios, de tal forma que el agente puede iniciarlos de nuevo si estos se paran. En este caso, el servicio reiniciado no requiere ningún parámetro porque Windows® ya sabe cómo hacerlo. En este caso la configuración es más sencilla y éste podría ser un ejemplo:

 module_begin
 module_name ServiceSched
 module_type generic_proc
 module_service Schedule
 module_description Service Task scheduler
 module_async yes
 module_watchdog yes
 module_end

En Unix

En Unix funciona igual que en MS Windows®, solo que para Unix proceso y servicio es el mismo concepto, por ejemplo, para ver si el proceso bash está activo en el sistema, bastará con ejecutar:

 module_begin
 module_name Service_bash
 module_type generic_proc
 module_service /bin/bash
 module_description Process bash running
 module_end

El modo watchdog y la detección asíncrona no son posibles en el Agente de Unix.

module_proc
module_proc <process>

Comprueba si un determinado nombre de proceso está operando en esta máquina.

En MS Windows®

Es innecesario el entrecomillado para el nombre del proceso. Tenga en cuenta que el nombre del proceso debe tener la extensión .exe. El Módulo devolverá el número de procesos que se estén ejecutando con este nombre.

Este sería un ejemplo de la monitorización de proceso cmd.exe>

 module_begin
 module_name CMDProcess
 module_type generic_proc
 module_proc cmd.exe
 module_description Process Command line
 module_end

Modo asíncrono

De una forma similar a los servicios, monitorizar procesos puede ser crítico en algunos casos. Ahora el Agente Software para Windows® soporta comprobaciones asíncronas para el parámetro module_proc. En este caso el Agente notifica inmediatamente cuando el proceso cambia de estado, sin esperar a que se cumpla el intervalo de ejecución del Agente. De esta forma, puede conocer de la caída de procesos críticos casi al instante de que ocurran. Ejemplo de monitorización asíncrona de procesos:

 module_begin
 module_name Notepad
 module_type generic_proc
 module_proc notepad.exe
 module_description Notepad
 module_async yes
 module_end

La diferencia está en el token de configuración module_async yes. Esta funcionalidad no está soportada en los Agentes Broker.

Watchdog de procesos

Un Watchdog es un sistema que permite actuar inmediatamente ante la caída de un proceso, generalmente, levantando el proceso que se ha caído. El Agente Software de Pandora FMS para Windows®, puede actuar como Watchdog ante la caída de un proceso.

Dado que ejecutar un proceso puede requerir algunos parámetros, hay algunas opciones adicionales de configuración para este tipo de módulos.

Es importante destacar que el modo Watchdog solo funciona cuando el tipo de módulo es asíncrono.

Ejemplo de configuración de un module_proc con watchdog:

 module_begin
 module_name Notepad
 module_type generic_proc
 module_proc notepad.exe
 module_description Notepad
 module_async yes
 module_watchdog yes
 module_start_command c:\windows\notepad.exe
 module_startdelay 3000
 module_retrydelay 2000
 module_retries 5
 module_end

Esta es la definición de los parámetros adicionales para module_proc con Watchdog:

module_retries

Número de intentos consecutivos que el Módulo intentará lanzar el proceso antes de desactivar el Watchdog. Si el límite es alcanzado, el mecanismo del Watchdog para este Módulo se desactivará y nunca más intentará lanzar el proceso hasta que se reinicie el Agente. Valor por defecto: Ilimitado.

module_startdelay

Número de milisegundos que el Módulo esperará antes de lanzar el proceso por primera vez.

module_retrydelay

Número de milisegundos que el Módulo esperará antes de intentar lanzar el proceso en cada reintento.

module_user_session

Controla en cuál sesión se desea que se lance el proceso. Si se configura a no el proceso se iniciará en la sesión de los servicios y, por lo tanto, permanecerá en segundo plano (opción por defecto). En caso contrario, si se configura a yes, el proceso se lanzará en la sesión del usuario y será visible desde el escritorio del PC.

Para versiones anteriores a Windows Vista® el token module_user_session puede configurarse de manera general habilitando en las propiedades del servicio de Pandora FMS la casilla “Acceso interactivo con el escritorio” (Allow service to interact with desktop):

Pandora FMS, como servicio, se ejecuta bajo la cuenta SYSTEM y que el proceso ejecutado lo hará bajo ese usuario y con ese entorno, de forma que si usted necesita ejecutar algún proceso determinado que requiera ser usado con un usuario específico, deberá encapsular en un script (.bat o similar) los procesos previos para inicializar el entorno, variables de entorno, etc), y ejecutar ese script como acción del Watchdog.

En Unix

En Unix funciona exactamente igual que en module_service. Tampoco soporta modo asíncrono ni watchdog.

module_cpuproc

Solamente para Unix

module_cpuproc <process>

Devuelve el uso de CPU específico de un proceso. Ejemplo.

 module_begin
 module_name myserver_cpu
 module_type generic_data
 module_cpuproc myserver
 module_description Process Command line
 module_end
module_memproc
module_memproc <process> 

Solo Unix. Devuelve el consumo de memoria específico de un proceso.

 module_begin
 module_name myserver_mem
 module_type generic_data
 module_memproc myserver
 module_description Process Command line
 module_end
module_freedisk
module_freedisk <disk_letter:>|<vol>

Comprueba el espacio libre en la unidad.

En Windows®

Debe colocar : después de la letra de la unidad ( <disk_letter:> ).

 module_begin
 module_name freedisk
 module_type generic_data
 module_freedisk C:
 module_end

En Unix®

El volumen a comprobar, como por ejemplo /var.

 module_begin
 module_name disk_var
 module_type generic_data
 module_freedisk /var
 module_end
module_freepercentdisk
module_freepercentdisk <disk_letter:>|<vol> 

Este Módulo devuelve el porcentaje de disco libre en una unidad lógica.

En Windows

Debe colocar : después de la letra de la unidad ( <disk_letter:> ).

 module_begin
 module_name freepercentdisk
 module_type generic_data
 module_freepercentdisk C:
 module_end

En Unix

El volumen a comprobar, como por ejemplo /var.

 module_begin
 module_name disk_var
 module_type generic_data
 module_freepercentdisk /var
 module_end
module_occupiedpercentdisk
module_occupiedpercentdisk <vol>

Solo para Unix. Este Módulo devuelve el porcentaje de disco ocupado, por ejemplo:

 module_begin
 module_name disk_var
 module_type generic_data
 module_occupiedpercentdisk /var
 module_end
module_cpuusage
module_cpuusage [<cpu id>|all] 

Devuelve el uso de CPU en un número de CPU. Si sólo existe una CPU no establezca ningún valor o utilice el valor all. Para Windows® y Unix.

También es posible obtener el promedio de uso de todas las CPU en un sistema multiprocesador:

 module_begin
 module_name CPU_use
 module_type generic_data
 module_cpuusage all
 module_description CPU average use
 module_end

Para comprobar el uso en la CPU #1:

 module_begin
 module_name CPU_1
 module_type generic_data
 module_cpuusage 1
 module_description CPU #1 average use
 module_end
module_freememory

Funciona tanto en Unix como en Windows®. Devuelve la memoria libre en todo el sistema.

 module_begin
 module_name FreeMemory
 module_type generic_data
 module_freememory
 module_description Non-used memory on system
 module_end
module_freepercentmemory

Funciona tanto en Unix como en Windows®. Este Módulo devuelve el porcentaje de memoria libre en un sistema:

 module_begin
 module_name freepercentmemory
 module_type generic_data
 module_freepercentmemory
 module_end
module_tcpcheck

Solo MS Windows®. Este Módulo inicia conexión con la dirección IP y puerto especificados. Devuelve 1 si tuvo éxito y 0 en caso contrario. Se debe especificar un tiempo de expiración con module_timeout. Ejemplo:

 module_begin
 module_name tcpcheck
 module_type generic_proc
 module_tcpcheck www.pandorafms.com
 module_port 80
 module_timeout 5
 module_end
module_regexp

Solamente para MS Windows®. Este Módulo monitoriza un fichero de registro (log) buscando coincidencias usando expresiones regulares, descartando las líneas ya existentes al iniciar la monitorización. Los datos devueltos por el Módulo dependen del tipo de Módulo:

  • generic_data_string, async_string: Devuelve todas las líneas que coincidan con la expresión regular.
  • generic_data: Devuelve el número de líneas que coincidan con la expresión regular.
  • generic_proc: Devuelve 1 si existe alguna coincidencia, 0 de otra forma.
  • module_noseekeof: Por defecto inactivo 0. Con este token de configuración activo 1, en cada ejecución, independientemente de las modificaciones en el fichero del log, el módulo reinicia su comprobación sin buscar el final del archivo (flag EOF). De esta manera siempre sacará en el XML todas aquellas líneas que coincidan con el patrón de búsqueda. Ejemplo:
 module_begin
 module_name regexp
 module_type generic_data_string
 module_regexp %SystemRoot%\my.log
 module_pattern ^\[error].*
 module_noseekeof 1
 module_end
module_wmiquery

Solo Windows®. Los Módulos WMI permiten ejecutar localmente cualquier consulta o query WMI sin utilizar una herramienta externa. Se configura por medio de dos parámetros:

  • module_wmiquery: WQL query empleada. Se pueden obtener varias líneas como resultado, que serán insertados como varios datos.
  • module_wmicolumn: Nombre de la columna que se va a usar como fuente de datos.

Por ejemplo, para una lista de los servicios instalados:

 module_begin
 module_name Services
 module_type generic_data_string
 module_wmiquery Select Name from Win32_Service
 module_wmicolumn Name
 module_end

Para obtener la carga actual de CPU:

 module_begin
 module_name CPU_speed
 module_type generic_data
 module_wmiquery SELECT LoadPercentage FROM Win32_Processor
 module_wmicolumn LoadPercentage
 module_end
module_perfcounter

Solo para MS Windows®.

Obtiene los datos del contador de rendimiento (performance counter) a través de la interfaz de PDH. La librería pdh.dll debe de estar instalada en el sistema. PDH.DLL es una librería de Windows, si no está disponible debe instalar la herramienta de análisis de rendimiento de Windows® que suele venir por defecto.

 module_begin
 module_name perfcounter
 module_type generic_data
 module_perfcounter \Memory\Pages/sec
 module_end

El monitor de rendimiento de Windows® es una herramienta muy potente y que dispone de cientos de parámetros que se pueden usar para monitorizar. Además cada fabricante incorpora sus propios contadores.

Puede observar los contadores de rendimiento mediante la herramienta Rendimiento (Performance):

Es posible añadir contadores de rendimiento nuevos mediante la herramienta del sistema. Su configuración tiene estructura jerárquica con elementos y subelementos. En este caso Procesador, % de tiempo de procesador y _Total:

La configuración del Módulo para este chequeo en particular es la siguiente:

 module_begin
 module_name Processor_Time
 module_type generic_data_inc
 module_perfcounter \Procesador(_Total)\% de tiempo de procesador
 module_end

Por defecto se muestra el valor en crudo del contador, para obtener el valor cocinado se puede añadir el parámetro module_cooked 1:

 module_begin
 module_name Disk_E/S_Seg
 module_type generic_data
 module_cooked 1
 module_perfcounter \DiscoFísico(_Total)\E/S divididas por seg.
 module_end

Muchos de los datos que devuelve son contadores, por lo que deberá usar generic_data_inc como tipo de datos. También puede devolver valores en escalas de datos muy altas (varios millones), por lo que puede reducir esos valores usando el postproceso del módulo, con valores tales como 0.000001 o similares.

module_inventory

Actualmente esta funcionalidad ha sido sustituida por inventario desde plugins de Agente tanto en sistemas Windows® como Linux/Unix®.

module_logevent

Solo para MS Windows®. Permite obtener información del log de eventos de Windows® basándose en los patrones indicados, permitiendo filtrar en función de la fuente y el tipo de evento.

El formato general de este Módulo es el siguiente:

 module_begin
 module_name MyEvent
 module_type async_string
 module_logevent
 module_source <logName>
 module_eventtype <event_type/level>
 module_eventcode <event_id>
 module_application <source>
 module_pattern <text substring to match>
 module_description
 module_end

Para evitar mostrar información repetida, solo se tienen en cuenta aquellos eventos que hayan tenido lugar desde la última vez que se ejecutó el Agente.

module_logevent acepta los siguientes parámetros, todos ellos exigen la introducción correcta de mayúsculas y minúsculas (case-sensitive):

  • module_source: Origen del evento (System, Application, Security). Campo obligatorio.
  • module_eventtype: Tipo de evento (error, information…). Campo opcional.
  • module_pattern: Patrón a buscar (subcadena). Campo opcional.
  • module_eventcode: ID numerico del evento. Campo opcional.
  • module_application: Aplicación que origina el evento registrado en el log. distinguir bien de module_source que indica el nombre de la fuente o fichero log de donde se buscan los eventos.

Por ejemplo, para mostrar todos los eventos del sistema de tipo error:

 module_begin
 module_name log_events
 module_type generic_data_string
 module_description System errors
 module_logevent
 module_source System
 module_eventtype error
 module_end

Para mostrar todos los eventos que contengan la palabra PandoraAgent>

 module_begin
 module_name log_events_pandora
 module_type async_string
 module_description PandoraAgent related events
 module_logevent
 module_source System
 module_pattern PandoraAgent
 module_end

Ejemplo para filtrar el siguiente evento:

 module_begin
 module_name MyEvent
 module_type async_string
 module_logevent
 module_source Application
 module_eventtype Information
 module_eventcode 6000
 module_application Winlogon
 module_pattern unavailable to handle
 module_description
 module_end
module_logchannel

Versión NG 715 o superior, solo para MS Windows®.

Tipo de Módulo que permite obtener información de los canales de logs de Windows®. Si bien module_logevent solo tiene acceso a los logs de los Registros de Windows®, este tipo de módulo permite extraer datos de otros ficheros de logs que estén configurados como canales. De esta forma, es posible obtener los logs englobados en los Registros de aplicaciones y servicios.

El formato general de este Módulo es el siguiente:

 module_begin
 module_name MyEvent
 module_type async_string
 module_logchannel
 module_source <logChannel>
 module_eventtype <event_type/level>
 module_eventcode <event_id>
 module_application <source>
 module_pattern <text substring to match>
 module_description <description>
 module_end

Para evitar mostrar información repetida, sólo se tienen en cuenta aquellos eventos que hayan tenido lugar desde el momento en el que se inicia el Agente.

module_logchannel acepta los siguientes parámetros, todos ellos exigen la introducción correcta de mayúsculas y minúsculas (case-sensitive):

  • module_source: Canal del evento. Con el comando wevtutil.exe enum-logs se obtiene un listado de todos los canales de logs locales de la máquina. Campo obligatorio.
  • module_eventtype: Tipo de evento ( critical, error, warning, info o verbose ). Campo opcional.
  • module_pattern: Patrón a buscar (subcadena). Campo opcional.
  • module_eventcode: Identificador numérico del evento. Campo opcional.
  • module_application: Aplicación origen del evento. Distinguir de module_source que indica el nombre de la fuente o fichero log de donde se buscan los eventos.

Por ejemplo, el siguiente módulo sirve para mostrar todos los eventos del canal Microsoft-Windows-TaskScheduler/Operational, de tipo information, con código 201 y que en el texto del log apareciera el texto code 0:

 module_begin
 module_name New logs
 module_type async_string
 module_logchannel
 module_description Successfully completed tasks
 module_source Microsoft-Windows-TaskScheduler/Operational
 module_eventtype information
 module_eventcode 201
 module_pattern code 0
 module_end

Con esta configuración de Módulo, el Agente de Pandora FMS puede recoger el siguiente log:

Haga clic para ampliar

Para obtener el nombre del canal del evento será necesario hacer click derecho en el mismo, seleccionar Propiedades y copiar el parámetro Full name, necesario para module_source.

module_plugin

Para la ejecución de plugins de Agente. Es un caso especial ya que no requiere de ninguna otra etiqueta tipo module_begin o module_end y tampoco indicar el tipo de Módulo.

Sintaxis con sus respectivos parámetros:

module_plugin plugin_filename parameter_1 parameter_2 (...) parameter_X

Sin embargo es posible usarlo también entre las etiquetas habituales de Módulos para añadir opciones adicionales como condiciones o intervalo:

 module_begin
 module_plugin plugin_filename parameter_1 parameter_2 (...) parameter_X
 module_interval 2
 module_condition (0, 1) script.sh
 module_end

Los parámetros a utilizar serán diferentes para cada plugin, por lo que será necesario remitirse a su documentación particular. Para describir el funcionamiento de uno de los plugins que vienen por defecto con el Agente, el plugin grep_log sirve como ejemplo para buscar coincidencias en un fichero:

module_plugin grep_log /var/log/syslog Syslog ssh

En este ejemplo, el nombre del plugin se llama, “grep_log” y buscará en el fichero “/var/log/syslog” la expresion regular “ssh” y lo guardará en un módulo llamado “Syslog”.

Ejemplo de llamada a un plugin en un Agente Windows:

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df_percent.vbs"

Puede obtener más información en el vídeo tutorial «Monitorización con plugin de agente».

module_ping

Solo para Windows®.

module_ping <host>

Este módulo realiza un ping al anfitrión o host especificado y devuelve 1 si está en línea.

Parámetros de configuración:

  • module_ping_count x: Número de paquetes ECHO_REQUEST a enviar (1 por defecto).
  • module_ping_timeout x: Tiempo de expiración en milisegundos de espera para cada respuesta (1000 por defecto).
  • module_advanced_options: Opciones avanzadas para ping.exe.

Ejemplo:

 module_begin
 module_name Ping
 module_type generic_proc
 module_ping 192.168.1.1
 module_ping_count 2
 module_ping_timeout 500
 module_end
module_snmpget

Únicamente para MS Windows®.

module_snmpget

Este Módulo ejecuta una consulta SNMP get y devuelve el valor solicitado. Los parámetros de configuración se deben especificar en líneas subsiguientes de esta manera:

  • module_snmpversion [1_2c_3]: Versión de SNMP (1 por defecto).
  • module_snmp_community <community>: Comunidad SNMP (public por defecto).
  • module_snmp_agent <host>: Agente SNMP objetivo.
  • module_snmp_oid <oid>: OID objetivo.
  • module_advanced_options: Opciones avanzadas para snmpget.exe.

Ejemplo:

 module_begin
 module_name SNMP get
 module_type generic_data
 module_snmpget
 module_snmpversion 1
 module_snmp_community public
 module_snmp_agent 192.168.1.1
 module_snmp_oid .1.3.6.1.2.1.2.2.1.1.148
 module_end
module_wait_timeout

Únicamente para MS Windows®.

module_wait_timeout X

Tiempo de expiración que se utiliza cuando se comprueba la salida de módulos module_exec y module_plugin. Valor por defecto 500 milisegundos. Modificar a 5 si la ejecución de un Módulo que genera mucha salida es lenta. Se recomienda no utilizar en el resto de casos.

Configuración automática de agentes

Introducción

Versión NG 725 o superior.

En el proceso de autoconfiguración de Agentes puede establecer una serie de reglas para que se configuren de manera automática y funciona de la siguiente manera:

  1. Prepare las configuraciones automáticas en su Consola Pandora FMS o Metaconsola Pandora FMS .
  2. Instale los Agentes reportando hacia su Pandora FMS (si tiene una Metaconsola con el sistema de autoaprovisionamiento configurado, establezca como servidor la propia Metaconsola).
  3. Pandora FMS Server recibirá un XML ( .data ) con los datos del Agente por primera vez.
  4. Se evaluarán las reglas para determinar la configuración automática a aplicar.
  5. El Agente recogerá la nueva configuración y reportará en el siguiente ciclo con la configuración actualizada.

Creación/edición de autoconfiguración

Consola

Acceda a la administración de las configuraciones automáticas a través de ConfigurationManage agent autoconfiguration:

Metaconsola

Vaya a AdvancedAgent management → icono de configuración automática de agentes:

Haga clic para ampliar

Una vez acceda a la página de administración puede crear nuevas configuraciones automáticas presionando el botón “Crear configuración automática” (Add new configuration definition). Deberá elegir un nombre y una descripción para su configuración automática.

Una vez creada la nueva configuración automática, puede mostrar los formularios de configuración pulsando en la sección que necesite:

Reglas

Para definir los Agentes sobre los que se aplicará la configuración automática, en primer lugar puede agregar reglas para identificarlos.

Despliegue el apartado de reglas dentro de su configuración automática, y seleccione “Agregar nueva regla” (Add new rule). Podrá elegir en el selector de reglas una serie de opciones, para identificar los agentes que se vayan a configurar.

Server name

Coincidencia en nombre de servidor.

Group name

Coincidencia en nombre de grupo.

OS

Coincidencia en nombre de sistema operativo mediante expresiones regulares.

Custom field

Coincidencia por clave/valor en base a un campo personalizado reportado por el Agente. Indique el nombre del campo personalizado y el valor que debe tener.

IP range

Coincidencia por rango de direcciones IP (red), utilice la notación IP/máscara, por ejemplo:

192.168.1.0/24

Script output (> 0)

Pensado para ejecutar un script cuyo resultado de la ejecución se evalúa como válida cuando la salida estándar sea mayor que 0.

Llamada al script de reglas

Admite las siguientes macros en el campo 'argumentos' (puede elegir entre operadores AND y OR para modificar la lógica de las reglas):

  • _agent_ : Se sustituirá por el nombre del Agente.
  • _agentalias_ : Se sustituirá por el alias del Agente.
  • _address_ : Se sustituirá por la dirección IP principal reportada por el Agente.
  • _agentgroup_ : Se sustituirá por el nombre del grupo reportado por el Agente.
  • _agentos_ : Se sustituirá por el sistema operativo del Agente.

Si no agrega ninguna regla, la configuración automática no se aplicará. Si necesita una única configuración para todos los agentes, puede utilizar la expresión regular siguiente para que coincida con cualquier alias: .*

Configuraciones

Desde esta sección puede configurar:

Grupo del Agente

Puede mantenerlo sin cambios o forzarlo a ser uno específico.

Grupos secundarios

Los grupos seleccionados aquí se agregarán como grupos secundarios al Agente.

Políticas

Puede seleccionar políticas para que se apliquen automáticamente cuando el Agente alcance el servidor.

Bloque de configuración

Agrega la configuración extra en bruto al fichero de configuración del Agente.

Nota: Si intenta acceder a la administración de configuraciones automáticas desde un nodo que pertenece a una Metaconsola, con la administración centralizada activa, la vista será de solo lectura:

Acciones extra

Desde esta sección puede asociar otras acciones a la autoconfiguración, como por ejemplo:

  1. Lanzar un evento personalizado (Launch custom event).
  2. Ejecutar una acción de alerta (Launch alert action).
  3. Ejecutar un guión o script (Launch script).

El sistema admite las siguientes macros:

_agent_

Se sustituirá por el nombre del Agente.

_agentalias_

Se sustituirá por el alias del Agente.

_address_

Se sustituirá por la dirección IP principal reportada por el agente.

_agentgroup_

Se sustituirá por el nombre del grupo reportado por el Agente.

_agentos_

Se sustituirá por el sistema operativo del Agente.

_agentid_

Se sustituye por el ID del Agente.

Agentes Unix/Linux

Configuración de los Agentes Unix de Pandora FMS

Las rutas y directorios fundamentales a tener en cuenta son:

  • /usr/share/pandora_agent : Donde se instala el Agente de Pandora FMS. En los sistemas donde por políticas esto no se permita, se recomienda crear un enlace a esta ruta desde la ruta real de instalación, por ejemplo /opt/pandora/usr/share/pandora_agent.
  • /etc/pandora/pandora_agent.conf : Fichero principal de configuración del Agente. Los Módulos de ejecución local y plugins de Agente se configuran aquí.
  • /usr/local/bin/pandora_agent> Binario ejecutable del Agente. Generalmente tiene un enlace a /usr/bin/pandora_agent.
  • /usr/local/bin/tentacle_client> Binario ejecutable de Tentacle, para la transferencia de ficheros hacia el servidor. Generalmente tiene un enlace a /usr/bin/tentacle_client.
  • /etc/init.d/pandora_agent_daemon> Script de inicio/parada/reinicio. En los sistemas AIX el demonio es /etc/rc.pandora_agent_daemon.
  • /var/log/pandora/pandora_agent.log> Fichero de texto donde se guarda la actividad del Agente de Pandora FMS, cuando el Agente se ejecuta en modo de depuración.
  • /etc/pandora/plugins> Directorio que contiene los plugins de agente. Está enlazado al directorio /usr/share/pandora_agent/plugins.
  • /etc/pandora/collections> Directorio que contiene las colecciones desplegadas al Agente. Está enlazado al directorio /usr/share/pandora_agent/collections.

Ejecución inicial del agente Unix

Para iniciar el Agente únicamente es necesario ejecutar:

/etc/init.d/pandora_agent_daemon start

Para detener el Agente, ejecute:

/etc/init.d/pandora_agent_daemon stop

Este script de arranque podrá iniciar o detener el Agente de Pandora FMS, que al iniciarse quedará por defecto corriendo en el sistema como un demonio.

Modificar la forma en que los agentes Unix obtienen información del sistema

Existen algunos Módulos que obtienen la información de forma predefinida sin necesidad de indicar un comando con module_exec. Estos módulos son:

  • module_procmem
  • module_freedisk
  • module_freepercentdisk
  • module_cpuproc
  • module_proc
  • module_procmem
  • module_cpuusage
  • module_freememory
  • module_freepercentmemory

Es posible modificar el funcionamiento de estos Módulos por defecto editando directamente el ejecutable del Agente (por defecto /usr/bin/pandora_agent ). El Agente de Pandora FMS está ubicado generalmente en /usr/bin/pandora_agent.

Busque la cadena Commands to retrieve la cual contiene el código que contiene los comandos internos. Bien puede hacer las modificaciones que necesite para adaptarlos al sistema.

# Commands to retrieve total memory information in kB
use constant TOTALMEMORY_CMDS => {
   linux => 'cat /proc/meminfo | grep MemTotal: | awk \'{ print $2 }\,
   solaris => 'MEM=`prtconf | grep Memory | awk \'{print $3}\'` bash -c \'echo $(( 1024 * $MEM ))\,
   hpux => 'swapinfo -t | grep memory | awk \'{print $2}\
};

# Commands to retrieve partition information in kB
use constant PART_CMDS => {
    # total, available, mount point
    linux => 'df -P | awk \'NR> 1 {print $2, $4, $6}\,
    solaris => 'df -k | awk \'NR> 1 {print $2, $4, $6}\,
    hpux => 'df -P | awk \'NR> 1 {print $2, $4, $6}\,
    aix => 'df -kP | awk \'NR> 1 {print $2, $4, $6}\
};

Para cambiar cualquiera de los comandos predefinidos, simplemente edite el código para modificar el comando, pero tenga cuidado con los siguientes aspectos:

  1. Verifique que las bloques { }; siempre terminen en punto y coma.
  2. Verifique que los comandos están encerrados entre comillas simples: ' ' .
  3. A su vez dentro de dichas comillas puede ser que necesite otro entrecomillado adicional con ` ` (observe bien el ejemplo anterior).
  4. Verifique que cualquier comilla simple que quiera usar en el comando, esté escapada previamente con el carácter \, es decir \'. Por ejemplo, este comando que normalmente sería:
df -P | awk 'NR> 1 {print $2, $4, $6}'

Debe escribirlo como:

df -P | awk \'NR> 1 {print $2, $4, $6}\'

Agentes Windows de Pandora FMS

Configuración del Agente para Windows de Pandora FMS

Las rutas y directorios fundamentales en las instalaciones del Agente para MS Windows® se encuentran en el propio directorio donde se haya instalado el Agente, por defecto %ProgramFiles%.

Los más importantes a tener en cuenta son:

%ProgramFiles%\pandora_agent

Donde se instala el Agente de Pandora FMS, su ejecutable y sus directorios.

%ProgramFiles%\pandora_agent\pandora_agent.conf

Fichero principal de configuración del Agente. Los Módulos de ejecución local y plugins de Agente se configuran aquí.

%ProgramFiles%\pandora_agent\PandoraAgent.exe

Binario ejecutable del Agente.

%ProgramFiles%\pandora_agent\util\tentacle_client.exe

Binario ejecutable de Tentacle, para la transferencia de ficheros hacia el servidor.

%ProgramFiles%\pandora_agent\scripts

Scripts de inicio/parada/reinicio del Agente de Pandora FMS.

%ProgramFiles%\pandora_agent\pandora_agent.log

Fichero de texto donde se guarda la actividad del Agente de Pandora FMS, cuando el agente se ejecuta en modo de depuración.

%ProgramFiles%\pandora_agent\util

Directorio que contiene los plugins de agente.

%ProgramFiles%\pandora_agent\collections

Directorio que contiene las colecciones del Agente.

Despliegue automático de agentes software

Puede desplegar Agentes Software utilizando la central de despliegues a través del sistema Discovery, más información en este enlace.

Auto-actualización de los Agentes Software

Utilizando las colecciones de archivos y la herramienta pandora_update puede proporcionar una manera de “auto-actualizar” los Agentes Software.

La herramienta pandora_update necesita el módulo de Perl Digest::MD5 para funcionar. A partir de la versión 5.14 de Perl, este módulo está integrado por defecto, pero en versiones anteriores deberá instalarlo manualmente.

Funciona del siguiente modo:

1. Los Agentes reciben nuevos binarios en el directorio de entrada de las colecciones.

Ejemplo en Windows®:

%ProgramFiles%\pandora_agent\collections\fc_1\PandoraAgent.exe

Ejemplo en Linux®:

/etc/pandora/collections/fc_1/pandora_agent

2. El Agente ejecuta el plugin pandora_update. Este plugin recibe un único parámetro: el nombre corto de la colección (en este ejemplo, fc_1). Analizará el directorio de la colección buscando el binario del Agente (no el instalador entero), comparará el binario ubicado en la colección con el que se encuentra corriendo en ese momento y, si son diferentes, pandora_update detiene el Agente, reemplaza el binario y reinicia el Agente de nuevo utilizando el nuevo binario.

Para actualizar diferentes arquitecturas deberá establecer una colección diferente para cada arquitectura. Por ejemplo, si se desean actualizar agentes de Windows® de 32 y 64 bits, debe crear dos colecciones y en cada una de ellas incluir el binario PandoraAgent.exe correspondiente.

3. Pandora_update también escribe a un log pequeño el evento actualizado, para ser capaz de recuperar en la siguiente ejecución y avisar al usuario (mediante el uso de un Módulo async_string ) acerca del proceso de actualización del Agente.

Esto implica que los Módulos utilizados para completar el proceso de actualización podrán ser configurados para tener un intervalo alto.

Unix instalación estándar

 module_begin
 module_name Pandora_Update
 module_type async_string
 module_interval 20
 module_exec nohup /etc/pandora/plugins/pandora_update fc_1 2> /dev/null && tail -1 nohup.out 2> /dev/null
 module_description Module to check new version of pandora agent and update itself
 module_end

Unix instalación personalizada

 module_begin
 module_name Pandora_Update
 module_type async_string
 module_interval 20
 module_exec nohup /var/opt/PandoraFMS/etc/pandora/plugins/pandora_update fc_1 /var/opt/PandoraFMS 2> /dev/null && tail -1 nohup.out 2> /dev/null
 module_description Module to check new version of pandora agent and update itself
 module_end

El comando pandora_update acepta como segundo parámetro la vía del directorio de instalación de Pandora FMS, es innecesario especificarlo si la instalación se realizó en la vía por defecto.

Windows®

 module_begin
 module_name Pandora_Update
 module_type async_string
 module_interval 20
 module_exec pandora_update.exe fc_1
 module_description Module to check new version of pandora agent and update itself
 module_end

Autocreación de Agentes y Módulos desde XML

Los Agentes pueden configurarse desde la Consola en tres modos de trabajo:

  • Modo aprendizaje: Si el XML recibido del Agente Software contiene nuevos Módulos, éstos serán automáticamente creados. Este es el comportamiento por defecto.
  • Modo normal: No se crearán nuevos Módulos que lleguen en el XML si no han sido declarados previamente en la consola.
  • Modo autodeshabilitado: Similar al modo aprendizaje, en este modo, además, si todos los Módulos pasan a estado desconocido el Agente se deshabilitará automáticamente, pasando a habilitarse de nuevo si recibe nueva información.

Datos que se incorporan en la creación del Agente

Los datos que se incorporan al Agente en el momento de la creación del mismo de forma automática al recibir un XML son los siguientes:

  • Nombre de Agente.
  • Dirección IP de Agente.
  • Descripción del agente.
  • Agente padre.
  • Timezone offset.
  • Grupo.
  • Sistema operativo.
  • Intervalo.
  • Agent version.
  • Custom fields.
  • Custom ID.
  • Dirección URL.
  • Modo de Agente: Aprendizaje, Normal, Auto-deshabilitado.

Datos que se actualizan del Agente al recibir un XML (modo aprendizaje activado)

  • Dirección IP del Agente.
  • Padre del Agente.
  • Versión SO.
  • Versión de Agente.
  • Zona horaria.
  • Custom fields.

Los datos GIS se actualizan siempre (si están habilitados) sin importar si el learning mode está desactivado.

Además, con el modo de aprendizaje activado se crearán nuevos módulos en Pandora FMS al ser recibidos a través de los XML.

Datos que se incorporan en la creación de un Módulo

Los datos que se incorporan en el Módulo la primera vez que se recibe un XML son los siguientes:

  • Nombre.
  • Tipo.
  • Descripción.
  • Máximo, Mínimo.
  • Post proceso.
  • Intervalo del Módulo.
  • Min/max Critical.
  • Min/max Warning.
  • Desactivado.
  • Unidades.
  • Module group.
  • Custom ID.
  • Str. Warning/Critical.
  • Instrucciones para crítico.
  • Instrucciones para advertencia.
  • Instrucciones para desconocido.
  • Tags.
  • Inversión de critico.
  • Inversión de advertencia.
  • Modo “silencioso”.
  • Min. FF Threshold.
  • Alert template.
  • Crontab.

Datos que se actualizan de un Módulo ya existente al recibir un XML

Cuando se recibe un XML que contiene información de un Módulo ya existente, únicamente se actualiza la descripción y la información extendida, además del dato del Módulo.

Volver al Índice de Documentación Pandora FMS