diff --git a/Rakefile b/Rakefile index af2bb4b..2d04e45 100644 --- a/Rakefile +++ b/Rakefile @@ -238,6 +238,7 @@ def create_package(target) sh "cp packaging/wrapper.sh #{package_dir}/#{PROFILE[:package_name]}" sh "cp packaging/keepalive #{package_dir}/keepalive" sh "cp packaging/reset-key.sh #{package_dir}/reset-key" + sh "cp packaging/cagent_updater.sh #{package_dir}/cagent_updater" sh "chmod +x #{package_dir}/#{PROFILE[:package_name]}" sh "cp -pR packaging/vendor #{package_dir}/lib/" sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/" diff --git a/init.d/cloudstats-agent b/init.d/cloudstats-agent index fa4c840..e52cf01 100755 --- a/init.d/cloudstats-agent +++ b/init.d/cloudstats-agent @@ -23,11 +23,12 @@ progpath='/home/cloudstats_agent/cloudstats-agent' # binary name prog=cloudstats-agent +update_script=cagent_updater keepalive_prog="$homepath/keepalive" # pid file pidfile="/var/run/${prog}.pid" - +update_pidfile="/var/run/cagent_updater.pid" # check the binary if not there exit ! [ -x $progpath ] && echo "$progpath: Agent not found" && exit 1 @@ -56,6 +57,10 @@ start() { local pid=$! echo $pid > $pidfile + $homepath/$update_script > /dev/null 2>&1 & + local update_pid=$1 + echo $update_pid > $update_pidfile + # check again if it's running ps -p $pid >/dev/null 2>&1 eval_cmd $? @@ -63,14 +68,15 @@ start() { stop() { # check if it's running - local pids="$(pidof -cx $keepalive_prog) $(pidof -c $prog)" + local pids="$(pidof -cx $keepalive_prog) $(pidof -c $prog) $(pidof -cx $update_script)" - if [ ${#pids} -lt 2 ]; then + if [ ${#pids} -lt 3 ]; then echo "$prog not running" return 0 fi printf "%-50s%s" "Stopping $prog: " '' rm -f $pidfile + rm -f $update_pidfile kill -9 $pids eval_cmd $? } diff --git a/lib/cloudstats/scheduler.rb b/lib/cloudstats/scheduler.rb index b9737bd..74ee3f6 100644 --- a/lib/cloudstats/scheduler.rb +++ b/lib/cloudstats/scheduler.rb @@ -39,12 +39,12 @@ def schedule publisher.publish end - $logger.info "Scheduling updates every #{update_rate}" - scheduler.every update_rate do - $logger.catch_and_log_socket_error(Updater.STORAGE_SERVICE) do - Updater.new.update - end - end +# $logger.info "Scheduling updates every #{update_rate}" +# scheduler.every update_rate do +# $logger.catch_and_log_socket_error(Updater.STORAGE_SERVICE) do +# Updater.new.update +# end +# end $logger.info "Scheduling backups" scheduler.cron '0 0 * * *' do diff --git a/packaging/cagent_updater.sh b/packaging/cagent_updater.sh new file mode 100755 index 0000000..50de359 --- /dev/null +++ b/packaging/cagent_updater.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +export INSTALL_PATH="/home/cloudstats_agent" + +while : +do + /home/cloudstats_agent/cloudstats-agent --update + sleep 5m +done