Nagios3 Centreon2 Ubuntu ndoutils

From Wiki Centreon

Jump to: navigation, search

Contents

Installation of NDOutils

Note: I haven't found NDO on the prerequisites for centreon but it is advisable to install the addon nonetheless. You will find the latest version on the official Nagios website http://www.nagios.org:

Note: Ubuntu community provides ndoutil version 1.4b7-2 but this package depends on nagios2 (version 2.11) (info 17/06/08)

prerequest

install mysql dev api

# sudo apt-get install libmysqlclient15-dev

download & make

download the archive

# cd /usr/local/src
# wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz

Unpack the archive and change the directory:

# tar -xzf ndoutils-1.4b7.tar.gz
# cd ndoutils-1.4b7
# vi README

configuration and installation:

# ./configure --prefix=/usr/local/nagios/ --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
# make


manual installation (no make install :-()

After creating the binaries and libraries they have to be copied

 cp ./src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
 cp ./src/ndo2db-3x /usr/local/nagios/bin/ndo2db
 cp ./config/ndo2db.cfg /usr/local/nagios/etc/
 cp ./config/ndomod.cfg /usr/local/nagios/etc/
 sudo chmod 774 /usr/local/nagios/bin/ndo*
 sudo chown nagios:nagios /usr/local/nagios/bin/ndo*

enable ndo module into nagios

Extracted from ndo README

3.Add a line similiar to the following to the *main* Nagios config file (usually /usr/local/nagios/etc/nagios.cfg):

broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

The config directive above will cause Nagios to load the NDOMOD event broker the next time it starts. Of course, this requres that you compiled Nagios with support for the event broker in the first place. :-)

4.Make sure you have a line similar to the following in the *main* Nagios config file (usually /usr/local/nagios/etc/nagios.cfg):

event_broker_option_=-1

That directive will cause the Nagios daemon to send data to the NDOMOD module. Without that option, NDOMOD won't get any information.

make ndo2db daemon autorun

install ndo init script : copy the folowing script in /etc/init.d/ndo2db (vi /etc/init.d/ndo2db)

#!/bin/sh
# 
#
# chkconfig: 345 99 01
# description: Nagios to mysql
#
# Author : GaĆ«tan Lucas
# Realase : 07/02/08
# Version : 0.1 b
# File : ndo2db
# Description: Starts and stops the Ndo2db daemon
#              used to provide network services status in a database.
#
  
status_ndo ()
{
	if ps -p $NdoPID > /dev/null 2>&1; then
	        return 0
	else
		return 1
	fi

	return 1
}

printstatus_ndo()
{
	if status_ndo $1 $2; then
		echo "ndo (pid $NdoPID) is running..."
	else
		echo "ndo is not running"
	fi
}

killproc_ndo ()
{
	echo "kill $2 $NdoPID"
	kill $2 $NdoPID
}

pid_ndo ()
{
	if test ! -f $NdoRunFile; then
		echo "No lock file found in $NdoRunFile"
		echo -n "         checking runing process..."
		NdoPID=`ps h -C ndo2db -o pid`
		if [ -z "$NdoPID" ]; then
			echo "     No ndo2db process found"
			exit 1
		else
			echo "     found process pid: $NdoPID"
			echo -n "         reinit $NdoRunFile ..."
			touch $NdoRunFile
			chown $NdoUser:$NdoGroup $NdoRunFile
			echo "$NdoPID" > $NdoRunFile
			echo "     done"
		fi
	fi

	NdoPID=`head $NdoRunFile`
}

# Source function library
# Solaris doesn't have an rc.d directory, so do a test first
if [ -f /etc/rc.d/init.d/functions ]; then
	. /etc/rc.d/init.d/functions
elif [ -f /etc/init.d/functions ]; then
	. /etc/init.d/functions
fi

prefix=/usr/local/nagios
exec_prefix=${prefix}
NdoBin=${exec_prefix}/bin/ndo2db
NdoCfgFile=${prefix}/etc/ndo2db.cfg
NdoRunFile=${prefix}/var/ndo2db.run
NdoLockDir=/var/lock/subsys
NdoLockFile=ndo2db.lock
NdoUser=nagios
NdoGroup=nagios
          
# Check that ndo exists.
if [ ! -f $NdoBin ]; then
   echo "Executable file $NdoBin not found.  Exiting."
   exit 1
fi

# Check that ndo.cfg exists.
if [ ! -f $NdoCfgFile ]; then
   echo "Configuration file $NdoCfgFile not found.  Exiting."
   exit 1
fi
          
# See how we were called.
case "$1" in

	start)
		echo -n "Starting ndo:"
		touch $NdoRunFile
		chown $NdoUser:$NdoGroup $NdoRunFile
		$NdoBin -c $NdoCfgFile
		if [ -d $NdoLockDir ]; then
			touch $NdoLockDir/$NdoLockFile;
	       	fi
		ps h -C ndo2db -o pid > $NdoRunFile
		if [ $? -eq 0 ]; then
			echo " done."
			exit 0
		else
			echo " failed."
			$0 stop
			exit 1
		fi
		;;

	stop)
		echo -n "Stopping ndo: "

		pid_ndo
		killproc_ndo

		# now we have to wait for ndo to exit and remove its
		# own NdoRunFile, otherwise a following "start" could
		# happen, and then the exiting ndo will remove the
		# new NdoRunFile, allowing multiple ndo daemons
		# to (sooner or later) run
		#echo -n 'Waiting for ndo to exit .'
		for i in 1 2 3 4 5 6 7 8 9 10 ; do
		    if status_ndo > /dev/null; then
			echo -n '.'
			sleep 1
		    else
			break
		    fi
		done
		if status_ndo > /dev/null; then
		    echo 
		    echo 'Warning - ndo did not exit in a timely manner'
		else
		    echo 'done.'
 		fi

		rm -f $NdoRunFile $NdoLockDir/$NdoLockFile
		;;

	status)
		pid_ndo
		printstatus_ndo ndo
		;;

	restart)
		$0 stop
		$0 start
		;;

	*)
		echo "Usage: ndo {start|stop|restart|status}"
		exit 1
		;;

esac
  
# End of this script

then add it to your config to load it automatically when starting/restarting your server :

# sudo update-rc.d ndo2db defaults
# chmod +x /etc/init.d/ndo2db

The NDOUtils are installed. Later on we have to make some adjustments.

Personal tools