puppet/modules/rhizo_base/files/collectd-hack

192 lines
4.2 KiB
Bash

#!/bin/bash
debug() {
if [ "$1" == "d" ] ; then
echo $2
fi
}
is_empty () {
_o=`rrdtool xport DEF:A=/var/lib/collectd/rrd/$(hostname -f)/$2:value:AVERAGE XPORT:A -s -1week -m27 | xmllint --xpath 'string(xport/data/row[v>0]/v)' -`
if [ $? != 0 ] ; then
echo "Error. exiting."
exit
fi
if [ "$_o" == "" -o "$_o" == "0.0000000000e+00" -o "$_o" == "NaN" ] ;then
_o=`rrdtool xport DEF:A=/var/lib/collectd/rrd/$(hostname -f)/$2:value:LAST XPORT:A -s -1min -m10 | xmllint --xpath 'string(xport/data/row[v>0]/v)' -`
if [ $? != 0 ] ; then
echo "Error. exiting."
exit
fi
if [ "$_o" == "" -o "$_o" == "0.0000000000e+00" -o "$_o" == "NaN" ] ;then
debug $1 "$2 is empty"
return 1
fi
fi
if [ "$1" == "ne" ] ; then
echo "$2 has data"
fi
return 0
}
category_msc() {
mkdir $1
cd $1
for f in ../statsd/derive-msc.0.$1.* ; do
ln -s $f $1-`echo $f | awk -F'.' '{print $6}'`.rrd
done
cd ..
}
category_bsc() {
mkdir $1
cd $1
for f in ../statsd/derive-bsc.0.$1.* ; do
ln -s $f $1-`echo $f | awk -F'.' '{print $6}'`.rrd
done
cd ..
}
category_bts() {
_name=`bname $2 | tr [:space:] -`
mkdir $1-$_name || return
cd $1-$_name
for f in ../statsd/derive-bts.$2.$1.* ; do
ln -s $f $1-`echo $f | awk -F'.' '{print $6}'`.rrd
done
cd ..
}
category_bts_g() {
_name=`bname $2 | tr [:space:] -`
mkdir $1-$_name || return
cd $1-$_name
for f in ../statsd/gauge-bts.$2.$1.* ; do
ln -s $f $1-`echo $f | awk -F'.' '{print $6}'`.rrd
done
cd ..
}
once() {
cd /var/lib/collectd/rrd/$(hostname -f)
#rm -rf sms
#mkdir -p sms
#cd sms
#for f in ../statsd/derive-msc.0.sms.* ; do
# ln -s $f sms-`echo $f | awk -F'.' '{print $6}'`.rrd
#done
#cd ..
for item in sms loc_update_type; do
rm -rf $item
category_msc $item $bts
done
for item in handover location_update chreq chan_sdcch chan_tch cm_serv_rej all_allocated assignment; do
rm -rf $item-*
for bts in "${!BTS[@]}" ; do
category_bts $item $bts
done
done
for item in oml_connected chanloadavg chan_ccch_sdcch4 chan_sdcch8 chan_tch_h chan_osmo_dyn lchan_borken; do
rm -rf $item-*
for bts in "${!BTS[@]}" ; do
category_bts_g $item $bts
done
done
rm -rf BTS_uptime-* EGPRS_* BYTES-* PCU_RACH-* PDCH-* MS_PRESENT-*
for bts in "${!BTS[@]}" ; do
_name=`bname $bts | tr [:space:] -`
mkdir BTS_uptime-$_name || exit
cd BTS_uptime-$_name
for f in ../statsd/gauge-bts.$bts.uptime.* ; do
ln -s $f uptime-`echo $f | awk -F'.' '{print $6}'`.rrd
done
cd ..
mkdir EGPRS_DL-$_name || exit
cd EGPRS_DL-$_name
for f in ../statsd/derive-PCU-$_name.bts.0.egprs.downlink* ; do
ln -s $f egprs-`echo $f | awk -F'.' '{print $7}'`.rrd
done
cd ..
mkdir EGPRS_UL-$_name || exit
cd EGPRS_UL-$_name
for f in ../statsd/derive-PCU-$_name.bts.0.egprs.uplink* ; do
ln -s $f egprs-`echo $f | awk -F'.' '{print $7}'`.rrd
done
cd ..
mkdir BYTES-$_name || exit
cd BYTES-$_name
for f in ../statsd/derive-PCU-$_name.bts.0.*payload_bytes* ; do
ln -s $f payload_bytes-`echo $f | awk -F'.' '{print $7}'`.rrd
done
cd ..
mkdir PCU_RACH-$_name || exit
cd PCU_RACH-$_name
for f in ../statsd/derive-PCU-$_name.bts.0.rach.*.*.rrd ; do
ln -s $f rach-`echo $f | awk -F'.' '{print $7"."$8}'`.rrd
done
cd ..
mkdir PDCH-$_name || exit
cd PDCH-$_name
for f in ../statsd/gauge-PCU-$_name.bts.0.pdch.*.*.rrd ; do
ln -s $f pdch-`echo $f | awk -F'.' '{print $7"."$8}'`.rrd
done
cd ..
mkdir MS_PRESENT-$_name || exit
cd MS_PRESENT-$_name
for f in ../statsd/gauge-PCU-$_name.bts.0.ms.present.rrd ; do
ln -s $f MS-`echo $f | awk -F'.' '{print $6"."$7}'`.rrd
done
cd ..
done
find -name chreq-total.rrd -type l -delete
find -name cm_serv_rej-rrd.rrd -type l -delete
}
if [ "$1" == "" ] ; then
echo "Please pass 1 argument"
exit
fi
. /home/rhizomatica/bin/vars.sh
if [ "$1" == "once" ] ; then
once
exit
fi
cd /var/lib/collectd/rrd/$(hostname -f)
rm -rf gauge-* derive-*
if [ ! -d statsd ] ; then
echo "No statsd directory"
exit
fi
for f in statsd/* ; do
debug $1 "Checking $f"
is_empty $1 $f
if [ $? == 1 ] ; then continue ; fi
mkdir $(basename $f .rrd) || exit
cd $(basename $f .rrd)
ln -s ../$f .
cd ..
done