111 lines
3.0 KiB
Bash
Executable File
111 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
KILL="NO"
|
|
ARCHIVE="/srv/Shared/BrowserExtensions/archive"
|
|
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
case $key in
|
|
-a|--ARCHIVE)
|
|
ARCHIVE="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
--kill)
|
|
KILL=YES
|
|
shift # past argument
|
|
;;
|
|
*) # unknown option
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
LATESTLOG=`ls $ARCHIVE/log/*0.log | tail -n 1`
|
|
LATESTGLOBALLOG=`ls $ARCHIVE/log/*-global.log | tail -n 1`
|
|
BASEDIR=$(dirname "$0")
|
|
|
|
PIDS=""
|
|
echo "# Checking update status"
|
|
if ps u -C global_update.sh > /dev/null; then
|
|
NUM=`ps u -C global_update.sh | tail -n +2 | wc -l`
|
|
echo "* $NUM instances of global_update.sh still running (WARNING)"
|
|
PIDS=`ps u -C global_update.sh | tail -n +2 | awk '{print $2}' | xargs`
|
|
echo " Running PIDs: $PIDS"
|
|
if [[ "$KILL" == "YES" ]];then
|
|
echo " KILL mode enabled, killing running global_update.sh instances"
|
|
echo " (executing pkill -9 -P $PIDS)"
|
|
pkill -9 -P $PIDS
|
|
pkill -f "ExtensionCrawler//crawler "
|
|
fi
|
|
else
|
|
echo "* global_update.sh not running"
|
|
NUM=0
|
|
fi
|
|
|
|
echo "* current status"
|
|
PDOWNLOADS=`grep 'Updating extension $' $LATESTLOG | wc -l`
|
|
echo " * parallel downloads finished: $PDOWNLOADS"
|
|
SDOWNLOADS=`grep 'Updating extension (' $LATESTLOG | wc -l`
|
|
echo " * sequential downloads finished: $SDOWNLOADS"
|
|
echo " * Updating info from log ($LATESTLOG):"
|
|
grep 'Updating .* extensions' $LATESTLOG | sed -e 's/^.*---//'
|
|
|
|
echo ""
|
|
echo "## Latest log:"
|
|
cat $LATESTGLOBALLOG
|
|
|
|
EXTENSIONS=`grep "Updating db" $LATESTLOG | wc -l`
|
|
|
|
WE=`grep WorkerException $LATESTLOG | sort -k 5,5 -u | wc -l`
|
|
echo "## Worker Exceptions: $WE (out of $EXTENSIONS)"
|
|
grep WorkerException $LATESTLOG | sort -k 5,5 -u | sort -k 3,3
|
|
|
|
ERRORS=`grep ERROR $LATESTLOG | sort -k 5,5 -u | wc -l`
|
|
echo "## ERROR LOG: $ERRORS (out of $EXTENSIONS)"
|
|
grep ERROR $LATESTLOG | sort -k 5,5 -u | sort -k 3,3
|
|
|
|
echo "# Server utilization"
|
|
top b -n 1 | head -n 15
|
|
|
|
DATE=`date --utc +%Y-%m-%d`
|
|
TIME=`date --utc +%H:%M:%S`
|
|
|
|
EXTS=`grep 'Updating .* extensions' $LATESTLOG \
|
|
| head -1 \
|
|
| sed -e 's/^.* (//' \
|
|
-e 's/ including forums, / /' \
|
|
-e 's/ excluding forums.*/ /g' \
|
|
| awk '{print $2";"$1}'`
|
|
|
|
if [[ "$EXTS" == "" ]]; then
|
|
EXTS=";"
|
|
fi
|
|
|
|
LASTPDOWNLOADS=`tail -1 $ARCHIVE/monitor/updates.csv | cut -d'"' -f8`
|
|
LASTSDOWNLOADS=`tail -1 $ARCHIVE/monitor/updates.csv | cut -d'"' -f10`
|
|
LASTMAIL=`tail -1 $ARCHIVE/monitor/updates.csv | cut -d'"' -f14`
|
|
|
|
if [[ "$NUM" == "0" ]]; then
|
|
MAIL=0
|
|
else
|
|
if [[ "$LASTPDOWNLOADS$LASTSDOWNLOADS" == "$PDOWNLOADS$SDOWNLOADS" ]]; then
|
|
if [[ "$LASTMAIL" == "0" ]]; then
|
|
echo "" | /usr/bin/mail -s "Extension Download Stalled!" ${USER:-root};
|
|
fi;
|
|
MAIL=1;
|
|
else
|
|
MAIL=0;
|
|
fi
|
|
fi
|
|
|
|
MEM=`free | tail -2 | awk '{print $2 " " $3 " " $4}' | xargs | sed -e 's/ /\";\"/g'`
|
|
|
|
echo "\"$DATE $TIME\";\"$NUM\";\"$PIDS\";$EXTS;\"$PDOWNLOADS\";\"$SDOWNLOADS\";\"$ERRORS\";\"$MAIL\";\"$MEM\"" >> $ARCHIVE/monitor/updates.csv
|
|
gnuplot -e "monitordir='$ARCHIVE/monitor'" $BASEDIR/download-report-one-week.gp
|
|
|