Apr 122010
 

Oups, seems I forgot to mention Nagios part 2 installation process 🙂 Sorry for this.

Ok let’s finish this Nagios install:

SNMP settings

Please edit /etc/default/snmpd

sudo nano /etc/default/snmpd

and change these sections:

#SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
SNMPDOPTS='-Ls4d -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

#TRAPDRUN=no
TRAPDRUN=yes



Edit snmpd configuration file:

sudo nano /etc/snmp/snmpd.conf

and change this section:

#       sec.name  source          community
#com2sec paranoid  default         public
com2sec readonly  default         public
#com2sec readwrite default         private

NDO database configuration

Create your database

mysqladmin -u root --password=mysqlcentaccess create ndo
mysql -u root --password=mysqlcentaccess mysql

mysql> GRANT ALL ON ndo.* TO ndouser@localhost IDENTIFIED BY "ndopassword"; FLUSH PRIVILEGES;
mysql> exit;

cd /usr/local/src/ndoutils-1.4b9/db
./installdb -u ndouser -p ndopassword -h localhost -d ndo

ignore the error message

Edit ndomod configuration file:

sudo nano /usr/local/nagios/etc/ndomod.cfg

find and replace these sections:

#instance_name=default
instance_name=Central

output_type=tcpsocket
#output_type=unixsocket

output=127.0.0.1
#output=/usr/local/nagios/var/ndo.sock

#reconnect_warning_interval=15
reconnect_warning_interval=900

#config_output_options=2
config_output_options=3

Edit ndo2db configuration file:

sudo nano /usr/local/nagios/etc/ndo2db.cfg

find and replace these sections:

#socket_type=unix
socket_type=tcp

db_name=ndo

# Keep timed events for 24 hours
max_timedevents_age=1440

# Keep system commands for 1 week
max_systemcommands_age=1440

# Keep service checks for 1 week
max_servicechecks_age=1440

# Keep host checks for 1 week
max_hostchecks_age=1440

# Keep event handlers for 31 days
max_eventhandlers_age=1440

Edit nagios configuration file:

sudo nano /usr/local/nagios/etc/nagios.cfg

find “broker” section and add this entry:

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

Edit sudoers grant file:

sudo nano /etc/sudoers

and add nagios user account after root account:

nagios ALL=(ALL) ALL

Create ndo2db file:

sudo nano /etc/init.d/ndo2db

Paste the following script (be carefull if you choose to use diferent credentials than nagios:nagios, you’ll have to modifiy the corresponding lines below(find NdoUser and NdoGroup)):

#!/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

change the owner, rights and add the job to autostart:

sudo chown root:root /etc/init.d/ndo2db
sudo chmod +x /etc/init.d/ndo2db
sudo update-rc.d ndo2db defaults

You could now realy proceed to Centreon installation section.