Welcome to Pandora FMS Community!

Find answers, ask questions, and connect with our community around the world.

Bienvenido a la comunidad de Pandora FMS Forums Soporte de la comunidad Module Interval – Agente / Broker

  • Module Interval – Agente / Broker

    Posted by oaguayo on julio 26, 2019 at 12:13

    Buenas,

    Estoy mirando de configurar un modulo en un agente Broker y estoy experimentando algun problema.

    De entrada el agente esta definido con un Interval de 300 (por defecto)

    El Broker también tiene definido el Interval de 300 (me han comentado que aunque se varie el interval del broker el que define el intervalo és el agent… por lo que seria de 300) -> así lo he podido comprobar

    El Modulo del Broker quiero que se ejecute cada 60 minutos, por lo que he intentado configurar el Module_Interval = 12 y no he conseguido el resultado esperado.

    Entonces me han sugerido configurar el Modulo del Broker en modo crontab también sin éxito… mi resutlado es siempre la ejecució cada 300 segundos.

    Paso configuración de los diferentes casos que he intentado aplicar a ver si hay algun error de codificación:

    ******* config del module broker con interval = 12 *****************
    module_begin
    module_name Internet Bandwith Test
    module_type generic_data_string
    module_exec curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/maste$
    module_interval 12
    module_description Executes a SpeedTest & Returns last execution date
    module_group Networking
    module_end
    
    
    ******* config del module broker con crontab  *****************
    
    module_begin
    
    module_name Internet Bandwith Test
    module_type generic_data_string
    module_exec curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/maste$
    module_crontab 10 * * * *
    module_description Executes a SpeedTest & Returns last execution date
    module_group Networking
    module_end
    nmorena replied 5 years, 5 months ago 3 Members · 3 Replies
  • 3 Replies
  • nmorena

    Member
    agosto 20, 2019 at 23:15
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas tardes, tenemos el mismo problema.
    Al parecer no esté soportado el module_interval en los brokers.

    Alguien nos puede ayudar?

    Gracias

  • diego-m

    Moderator
    agosto 22, 2019 at 12:49
    500 Karma points
    Community rank: tentacle_master_icon Tentacle Master
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas oaguayo y nmorena

    Mucho me temo que se trata de un bug, module_interval no funciona actualmente con los agentes broker, esperamos solucionarlo en proximas actualizaciones.

    Saludos
    Diego

  • nmorena

    Member
    agosto 22, 2019 at 22:09
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Les comento que al final logré solucionarlo haciendo un script que use un archivo como bandera y compruebe la última modificación de este y mediante un intervalo pasado como parámetro evalúe si es necesario o no ejecutar el contador.

    Este script lo utilizo como module_precondition, si devuelve 1 corre el contador, sino no.
    De igual manera hay que configurar el module_interval para que el contador no quede en desconocido.

    Para el caso que pasas vos @oaguayo la ejecución sería la siguiente:

    ******* config del module broker con interval = 12 *****************
    module_begin
    module_name Internet Bandwith Test
    module_type generic_data_string
    module_exec curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/maste$
    module_precondition = 1 /check_interval / 12
    module_interval 12
    module_description Executes a SpeedTest & Returns last execution date
    module_group Networking
    module_end

    El código del archivo check_interval (no me deja adjuntarlo):

    #!/bin/bash
    
    ##################################################################################
    # Dados los parametros  e , retorna en STDOUT si el 
    # archivo fue actualizado hace menos (0) o mas (1) que el tiempo definido por 
    # .
    ##################################################################################
    
    # Validar existencia parametro archivo bandera
    if [ -z "$1" ]
    then
    	echo "No se especifico archivo bandera. Sintaxis: $0  ."
    	exit
    fi
    
    # Validar existencia parametros intervalo
    if [ -z "$2" ]
    then
    	echo "No se especifico intervalo. Sintaxis: $0  ."
    	exit
    fi
    
    file=$1				# el archivo bandera (path completo)
    module_interval=$2		# el intervalo a correr expresado en cantidad de iteraciones del agente
    
    # Si el archivo bandera no existe, crearlo vacío e indicar que es hora de ejecutar el modulo Pandora
    if [ ! -f $file ]
    then
    	touch $file
    	echo 1
    	exit
    # Si el archivo existe
    else
    	# Obtener la fecha de ultima actualización del archivo bandera
    	lastUpdate=$(date -r $file +%s)
    	
    	# Obtener la hora actual
    	now=$(date +%s)
    	
    	# Calcular la "edad" del archivo en segundos
    	file_age=$((now - lastUpdate))
    	
    	# Convertir el intervalo de cantidad de iteraciones del agente a segundos
    	time_to_execute=$(expr $module_interval * 5 * 60)
    fi
    
    # Comparar "edad" del archivo con el umbral
    if [ $file_age -gt $time_to_execute ]
    then
    	touch $file
    	echo 1
    else
    	echo 0
    fi

    Espero que sea de utilidad y que puedan solucionar lo del module_interval para los brokers pronto.

    Saludos,
    Nicolás