#!/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_tch_f 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-* SUBS-VLR 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 mkdir SUBS-VLR || exit cd SUBS-VLR ln -s ../statsd/gauge-vlr.0.subscribers.rrd Connected-Count.rrd 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