~fajran/sedot/trunk

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"