MRTG as a Start Up Service in Ubuntu
I am monitoring a lot of routers and switches of my organization using MRTG ( Multi Router Traffic Grapher ) . It is one of the best tools to give you an overview of bandwidth utilizations, CPU/Memory Utilizations etc. Here is a small bash script to make all these MRTG process act as a service which is automatically start up at reboot.Details of MRTG
I am using MRTG with RRDTool using routers.cgi script. My MRTG configurations arrangements are like- Location1 Folder
- router.cfg
- switch.cfg
- servers.cfg
- Location2 Folder
- router.cfg
- switch.cfg
- servers.cfg
- Location3 Folder
- SubLocation1 Folder
- router.cfg
- switch.cfg
- servers.cfg
- SubLocation2 Folder
- router.cfg
- switch.cfg
- servers.cfg
- router.cfg
- SubLocation1 Folder
mrtg script
#! /bin/bash
#
# Written by Irfan Naseef <irfannaseefp at gmail dot com>.
# Modified for Debian GNU/Linux
# Modified for MyOrganization
### BEGIN INIT INFO
# Provides: mrtg
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MRTG Daemon
# Description: MRTG or Multi Router Traffic grapher.
### END INIT INFO
if ! [ -x "/lib/lsb/init-functions" ]; then
. /lib/lsb/init-functions
else
echo "E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed"
exit 1
fi
DAEMON=/usr/bin/mrtg
CONFDIR=/home/iocl/mrtg/cfg
VARLOCK=/var/lock/mrtg
[ -x "$DAEMON" ] || exit 0
startfunc(){
locdir=$(dirname $1)
bname=$(basename $1 .cfg)
pid_file=$locdir/$bname.pid
cfg_file=$1
[ -e $pid_file ] && rm -f $pid_file
if [ -e $cfg_file ]
then
$DAEMON $cfg_file
status=$?
if [ $status -eq 0 ]
then
echo "Demonizing $bname.cfg"
else
echo "Error in starting $1"
fi
else
echo "Error : No configuration exist for $1"
fi
}
stopfunc(){
bname=$(basename $1 .pid)
pid=$(cat $1)
if [ $pid -eq $pid 2> /dev/null ]
then
kill $pid
echo "Killing $bname with pid $pid"
else
echo "unknow file $bname: Not a pid file"
fi
}
mrtg_start(){
items=`ls $1 | grep -v '.pid\|.sh\|.bat'`
for i in ${items[@]}
do
if [ -f $1/$i ]
then
startfunc $1/$i
elif [ -d $1/$i ]
then
mrtg_start "$1/$i"
fi
done
}
mrtg_stop(){
items=`ls $1 | grep -v '.cfg\|.sh\|.bat'`
for i in ${items[@]}
do
if [ -f $1/$i ]
then
stopfunc $1/$i
elif [ -d $1/$i ]
then
mrtg_stop "$1/$i"
fi
done
}
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting MRTG"
if [ ! -d $VARLOCK ]
then
mkdir $VARLOCK
fi
mrtg_start $CONFDIR
;;
stop)
echo "Stopping MRTG"
mrtg_stop $CONFDIR
;;
restart|reload)
echo "Restarting MRTG"
mrtg_stop $CONFDIR
mrtg_start $CONFDIR
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Save this script into /etc/init.d .
Now use update-rc.d command for adding this script to various run levels. Add this to default runlevel using this command .
sudo update-rc.d mrtg defaultsNow from the next reboot onwards MRTG service will be automatically started.
Also you can manage MRTG using service command. For stopping all the mrtg processes
sudo service mrtg stopFor starting all the MRTG processes
sudo service mrtg startFor restarting all the MRTG processes
sudo service mrtg restart
NOTE: This is a System-V model init script. Now Ubuntu started supporting an event-based init script-Upstart also. More details on Upstart you can check out here http://upstart.ubuntu.com/cookbook/

No comments:
Post a Comment