Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Module Interval - Agente / Broker
#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
Messages In This Thread
Module Interval - Agente / Broker - by oaguayo - 07-26-2019, 08:13 AM
RE: Module Interval - Agente / Broker - by nmorena - 08-22-2019, 06:09 PM


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