Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Module Interval - Agente / Broker
#1
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:


Code:
******* 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





Code:
******* 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
 Reply
#2
Buenas tardes, tenemos el mismo problema.
Al parecer no esté soportado el module_interval en los brokers.

Alguien nos puede ayudar?

Gracias
 Reply
#3
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
 Reply
#4
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:
Code:
******* 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 <path check_interval>/check_interval <path archivo bandera>/<archivo bandera> 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):
Code:
#!/bin/bash

##################################################################################
# Dados los parametros <archivo-bandera> e <intervalo>, retorna en STDOUT si el
# archivo fue actualizado hace menos (0) o mas (1) que el tiempo definido por
# <intervalo>.
##################################################################################

# Validar existencia parametro archivo bandera
if [ -z "$1" ]
then
    echo "No se especifico archivo bandera. Sintaxis: $0 <archivo-bandera> <intervalo>."
    exit
fi

# Validar existencia parametros intervalo
if [ -z "$2" ]
then
    echo "No se especifico intervalo. Sintaxis: $0 <archivo-bandera> <intervalo>."
    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
 Reply


Users browsing this thread: 1 Guest(s)


(c) 2006-2018 Artica Soluciones Tecnológicas. Contents of this wiki are under Create Common Attribution v3 licence. | pandorafms.com | pandorafms.org

Theme © MyBB Themes