57 lines
1.6 KiB
Bash
Executable File
57 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#ghetto temporary cronjob to pull some of the stats for swift-recon
|
|
#usage: swift-recon-cron /var/log/swift/storage.log
|
|
# run it as frequently as you like, will skip runs during periods
|
|
# of high async pendings when the find takes a while.
|
|
#todo: everything.
|
|
|
|
SYSLOG_FACILITY="local2"
|
|
ASYNC_PATH="/srv/node/sd[a-z]/async_pending/"
|
|
RECON_CACHE_PATH="/var/cache/swift"
|
|
|
|
LOCKFILE="/var/lock/swift-recon-object.lock"
|
|
if [ -e $LOCKFILE ]; then
|
|
echo "NOTICE - $0 lock present - cron jobs overlapping ?"
|
|
echo "$0 lock file present" | /usr/bin/logger -p $SYSLOG_FACILITY.err
|
|
exit 1
|
|
else
|
|
touch $LOCKFILE
|
|
fi
|
|
|
|
|
|
if [ -z "$1" ]; then
|
|
LOGFILE="/var/log/swift/storage.log"
|
|
else
|
|
LOGFILE=$1
|
|
fi
|
|
|
|
if [ ! -r "$LOGFILE" ]; then
|
|
echo "$0: error $LOGFILE not readable" | /usr/bin/logger -p $SYSLOG_FACILITY.err
|
|
rm $LOCKFILE
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$RECON_CACHE_PATH" ]; then
|
|
mkdir $RECON_CACHE_PATH
|
|
fi
|
|
|
|
TMPF=`/bin/mktemp`
|
|
|
|
asyncs=$(find $ASYNC_PATH -type f 2> /dev/null| wc -l)
|
|
#asyncs=$(find /srv/[1-4]/node/sd[a-z]1/async_pending/ -type f 2> /dev/null| wc -l) #saio
|
|
objrep=$(grep "Object replication complete." $LOGFILE | tail -n 1 | awk '{print $9}' | sed -e 's/(//g')
|
|
objincoming=$(netstat -aln | egrep "tcp.*:6000.*:.*ESTABLISHED" -c)
|
|
#objtw=$(netstat -aln | egrep "tcp.*:6000.*:.*TIME_WAIT" -c)
|
|
|
|
echo "{\"async_pending\":$asyncs, \"object_replication_time\":$objrep, \"object_established_conns\":$objincoming}" > $TMPF
|
|
|
|
mv $TMPF $RECON_CACHE_PATH/object.recon
|
|
if [ $? -ne 0 ]; then
|
|
echo "$0: $TMPF rename failed" | /usr/bin/logger -p $SYSLOG_FACILITY.err
|
|
rm -f $TMPF $LOCKFILE
|
|
exit 1
|
|
fi
|
|
rm -f $TMPF $LOCKFILE
|
|
exit 0
|