1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/usr/bin/env bash
. `dirname $0`/../lib/init.sh
. $BASE/lib/common.sh
NODE=$1
if [ "$NODE" == "" ]; then
NODE=$HOST
fi
#
# Functions
#
ensure_rrd () {
RRD=$1
[ -f "$RRD" ] && return 0
NOW=`date "+%s"`
INTERVAL=86400
INTERVAL3=$(( INTERVAL * 3 ))
START=$(( NOW - 3 * INTERVAL ))
HIYEAR=$(( 366 * 5 ))
LOYEAR=$(( 52 * 15 ))
rrdtool create "$RRD" \
--step $INTERVAL \
--start $START \
DS:size:GAUGE:$INTERVAL3:0:U \
RRA:AVERAGE:0.5:1:$HIYEAR \
RRA:AVERAGE:0.5:7:$LOYEAR \
RRA:MIN:0.5:7:$LOYEAR \
RRA:MAX:0.5:7:$LOYEAR
}
update_rrd () {
RRD=$1
NOW=$2
VAL=$3
rrdtool update "$RRD" $NOW:$VAL
}
#
# Check lock
#
mkdir -p $BASE/data/lock/
LOCK=$BASE/data/lock/collect-mirror-size-$HOST
trap 'do_unlock "$LOCK"' 1 2 3 6
do_lock "$LOCK"
if [ "$?" -ne "0" ]; then
exit 1
fi
#
# Get mirror size
#
NODEDIR=$BASE/nodes/$NODE
PKGS=$NODEDIR/pkgs
PKGBASE=$BASE/pkgs
LOGBASE=$BASE/log/mirror-size
mkdir -p $LOGBASE
get_content $PKGS | while read pkg
do
TARGET=`get_value $PKGBASE/$pkg/target`
if [ -d $TARGET ]; then
SIZE=`nice -n 9 du -s $TARGET/ | awk '{ print $1 }'`
NOW=`date "+%s"`
RRD=$LOGBASE/$pkg.rrd
LOG=$LOGBASE/$pkg.log
ensure_rrd "$RRD"
update_rrd "$RRD" "$NOW" "$SIZE"
echo $NOW $SIZE >> $LOG
fi
done
#
# Unlock
#
do_unlock "$LOCK"
|