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 0Save 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