~cthier/swift/s3_bucket_date

332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
1
#!/bin/bash
2
3
#ghetto temporary cronjob to pull some of the stats for swift-recon
4
#usage: swift-recon-cron /var/log/swift/storage.log 
5
# run it as frequently as you like, will skip runs during periods
6
# of high async pendings when the find takes a while.
7
#todo: everything.
8
332.3.2 by Florian Hines
few fixes to temp cronjob
9
SYSLOG_FACILITY="local2"
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
10
ASYNC_PATH="/srv/node/sd[a-z]/async_pending/"
332.3.2 by Florian Hines
few fixes to temp cronjob
11
RECON_CACHE_PATH="/var/cache/swift"
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
12
13
LOCKFILE="/var/lock/swift-recon-object.lock"
14
if [ -e $LOCKFILE ]; then
15
    echo "NOTICE - $0 lock present - cron jobs overlapping ?" 
332.3.2 by Florian Hines
few fixes to temp cronjob
16
    echo "$0 lock file present" | /usr/bin/logger -p $SYSLOG_FACILITY.err
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
17
    exit 1
18
else
19
    touch $LOCKFILE
20
fi
21
332.3.2 by Florian Hines
few fixes to temp cronjob
22
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
23
if [ -z "$1" ]; then
24
    LOGFILE="/var/log/swift/storage.log"
25
else
26
    LOGFILE=$1
27
fi
28
29
if [ ! -r "$LOGFILE" ]; then
332.3.2 by Florian Hines
few fixes to temp cronjob
30
    echo "$0: error $LOGFILE not readable" | /usr/bin/logger -p $SYSLOG_FACILITY.err
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
31
    rm $LOCKFILE
32
    exit 1
33
fi
34
332.3.2 by Florian Hines
few fixes to temp cronjob
35
if [ ! -d "$RECON_CACHE_PATH" ]; then
36
    mkdir $RECON_CACHE_PATH
37
fi
38
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
39
TMPF=`/bin/mktemp`
40
41
asyncs=$(find $ASYNC_PATH -type f 2> /dev/null| wc -l)
42
#asyncs=$(find /srv/[1-4]/node/sd[a-z]1/async_pending/ -type f 2> /dev/null| wc -l) #saio
43
objrep=$(grep "Object replication complete." $LOGFILE  | tail -n 1 | awk '{print $9}' | sed -e 's/(//g')
44
objincoming=$(netstat -aln | egrep "tcp.*:6000.*:.*ESTABLISHED" -c)
45
#objtw=$(netstat -aln | egrep "tcp.*:6000.*:.*TIME_WAIT" -c)
46
47
echo "{\"async_pending\":$asyncs, \"object_replication_time\":$objrep, \"object_established_conns\":$objincoming}" > $TMPF
48
332.3.2 by Florian Hines
few fixes to temp cronjob
49
mv $TMPF $RECON_CACHE_PATH/object.recon
50
if [ $? -ne 0 ]; then
51
    echo "$0: $TMPF rename failed" | /usr/bin/logger -p $SYSLOG_FACILITY.err
52
    rm -f $TMPF $LOCKFILE
53
    exit 1
54
fi
332.3.1 by Florian Hines
recon middlewear for the object server and utils for cluster monitoring
55
rm -f $TMPF $LOCKFILE
56
exit 0