Page 1 of 1

Nagios 4.0.4 service won't start

Posted: Mon Mar 17, 2014 12:43 pm
by goncalo.pereira
I upgraded from nagios 4.0.3 to 4.0.4 today and it run fine for some hours but when I added a new config file in nagios.cfg the service became unresponsive.
I reinstalled nagios 4.0.4 and checked the configuration with no errors, but when I try to do /etc/init.d/nagios start it only returns:

Starting nagios:root@nagios:/usr/local/nagios/var# (and command line waits for input here)

When I do a restart it returns same with:

Running configuration check...root@nagios:/usr/local/nagios/var# (and command line waits for input here)

Nagios log doesn't show anything new after I try to start or restart, I can open nagios webpage in the browser but can't view hosts because it states nagios isn't running and i checked it isn't with ps ax | grep nagios.

Nagios init.d file is the standard one also.

I followed all the steps on the official installation guide, the server is debian and I never got this issue with 4.0.2 or 4.0.3 versions, any ideas?

Re: Nagios 4.0.4 service won't start

Posted: Mon Mar 17, 2014 1:48 pm
by scottwilkerson
Would it be possible to post your current /etc/init.d/nagios ?

Thanks

Re: Nagios 4.0.4 service won't start

Posted: Tue Mar 18, 2014 3:38 am
by goncalo.pereira
Here it is.

Code: Select all

#!/bin/sh
# 
# chkconfig: 345 99 01
# description: Nagios network monitor
# processname: nagios
# File : nagios
#
# Author : Jorge Sanchez Aymar ([email protected])
# 
# Changelog :
#
# 1999-07-09 Karl DeBisschop <[email protected]>
#  - setup for autoconf
#  - add reload function
# 1999-08-06 Ethan Galstad <[email protected]>
#  - Added configuration info for use with RedHat's chkconfig tool
#    per Fran Boon's suggestion
# 1999-08-13 Jim Popovitch <[email protected]>
#  - added variable for nagios/var directory
#  - cd into nagios/var directory before creating tmp files on startup
# 1999-08-16 Ethan Galstad <[email protected]>
#  - Added test for rc.d directory as suggested by Karl DeBisschop
# 2000-07-23 Karl DeBisschop <[email protected]>
#  - Clean out redhat macros and other dependencies
# 2003-01-11 Ethan Galstad <[email protected]>
#  - Updated su syntax (Gary Miller)
#
# Description: Starts and stops the Nagios monitor
#              used to provide network services status.
#
### BEGIN INIT INFO
# Provides:		nagios
# Required-Start:	$local_fs $syslog $network
# Required-Stop:	$local_fs $syslog $network
# Short-Description:	Starts and stops the Nagios monitoring server
# Description:		Starts and stops the Nagios monitoring server
### END INIT INFO

# Load any extra environment variables for Nagios and its plugins
if test -f /etc/sysconfig/nagios; then
	. /etc/sysconfig/nagios
fi

# Source function library
# Some *nix do not 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
elif [ -f /lib/lsb/init-functions ]; then
	. /lib/lsb/init-functions
fi

prefix=/usr/local/nagios
exec_prefix=${prefix}
NagiosBin=${exec_prefix}/bin/nagios
NagiosCfgFile=${prefix}/etc/nagios.cfg
NagiosStatusFile=${prefix}/var/status.dat
NagiosRetentionFile=${prefix}/var/retention.dat
NagiosCommandFile=${prefix}/var/rw/nagios.cmd
NagiosVarDir=${prefix}/var
NagiosRunFile=${prefix}/var/nagios.lock
NagiosLockDir=/var/lock/subsys
NagiosLockFile=nagios
NagiosCGIDir=${exec_prefix}/sbin
NagiosUser=nagios
NagiosGroup=nagios
checkconfig="true"

# Automate addition of RAMDISK based on environment variables
USE_RAMDISK=${USE_RAMDISK:-0}
if test "$USE_RAMDISK" -ne 0 && test "$RAMDISK_SIZE"X != "X"; then
	ramdisk=`mount |grep "$ramdiskdir type tmpfs"`
	if [ "$ramdisk"X == "X" ]; then
		mkdir -p -m 0755 ${RAMDISK_DIR}
		mount -t tmpfs -o size=${RAMDISK_SIZE}m tmpfs ${RAMDISK_DIR}
		mkdir -p -m 0755 ${RAMDISK_DIR}/checkresults
		chown -R $NagiosUser:$NagiosGroup ${RAMDISK_DIR}
	fi
fi

check_config() {
	TMPFILE=$(mktemp /tmp/.configtest.XXXXXXXX)
	su - $NagiosUser -c "$NagiosBin -vp $NagiosCfgFile" > "$TMPFILE"
	WARN=`grep ^"Total Warnings:" "$TMPFILE" |awk -F: '{print \$2}' |sed s/' '//g`
	ERR=`grep ^"Total Errors:" "$TMPFILE" |awk -F: '{print \$2}' |sed s/' '//g`

	if test "$WARN" = "0" && test "${ERR}" = "0"; then
		echo "OK - Configuration check verified" > /var/run/nagios.configtest
		chmod 0644 /var/run/nagios.configtest
		/bin/rm "$TMPFILE"
    	return 0
	elif test "${ERR}" = "0"; then
		# We'll write out the errors to a file we can have a
		# script watching for
		echo "WARNING: Warnings in config files - see log for details: /var/run/nagios.configtest" > /var/run/nagios.configtest
		egrep -i "(^warning|^error)" "$TMPFILE" >> /var/run/nagios.configtest
		chmod 0644 /var/run/nagios.configtest
		/bin/rm "$TMPFILE"
    	return 0
	else
		# We'll write out the errors to a file we can have a
		# script watching for
		echo "ERROR: Errors in config files - see log for details: /var/run/nagios.configtest" > /var/run/nagios.configtest
		egrep -i "(^warning|^error)" "$TMPFILE" >> /var/run/nagios.configtest
		chmod 0644 /var/run/nagios.configtest
		cat "$TMPFILE"
    	exit 8
	fi
}

status_nagios ()
{

	if test -x $NagiosCGI/daemonchk.cgi; then
		if $NagiosCGI/daemonchk.cgi -l $NagiosRunFile; then
		        return 0
		else
			return 1
		fi
	else
		if ps -p $NagiosPID > /dev/null 2>&1; then
		        return 0
		else
			return 1
		fi
	fi

	return 1
}


printstatus_nagios()
{

	if status_nagios $1 $2; then
		echo "nagios (pid $NagiosPID) is running..."
	else
		echo "nagios is not running"
	fi
}


killproc_nagios ()
{

	kill $2 $NagiosPID

}


pid_nagios ()
{

	if test ! -f $NagiosRunFile; then
		echo "No lock file found in $NagiosRunFile"
		exit 1
	fi

	NagiosPID=`head -n 1 $NagiosRunFile`
}

         

# Check that nagios exists.
if [ ! -f $NagiosBin ]; then
    echo "Executable file $NagiosBin not found.  Exiting."
    exit 1
fi

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

	start)
		echo -n "Starting nagios:"
		if test "$checkconfig" = "true"; then
			check_config
		fi
		if [ $? -eq 0 ]; then
			su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
			rm -f $NagiosCommandFile
			touch $NagiosRunFile
			chown $NagiosUser:$NagiosGroup $NagiosRunFile
			$NagiosBin -d $NagiosCfgFile
			if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
			echo " done."
			exit 0
		else
			echo "CONFIG ERROR!  Start aborted.  Check your Nagios configuration."
			exit 1
		fi
		;;

	stop)
		echo -n "Stopping nagios: "

		pid_nagios
		killproc_nagios nagios

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

		rm -f $NagiosStatusFile $NagiosRunFile $NagiosLockDir/$NagiosLockFile $NagiosCommandFile
		;;

	status)
		pid_nagios
		printstatus_nagios nagios
		;;

	checkconfig)
		if test "$checkconfig" = "true"; then
			printf "Running configuration check..."
			check_config
		fi
		
		if [ $? -eq 0 ]; then
			echo " OK."
		else
			echo " CONFIG ERROR!  Check your Nagios configuration."
			exit 1
		fi
		;;

	restart)
		if test "$checkconfig" = "true"; then
			printf "Running configuration check..."
			check_config
		fi

		$0 stop
		$0 start

		;;

	reload|force-reload)
		if test "$checkconfig" = "true"; then
			printf "Running configuration check..."
			check_config
		fi
		
		if test ! -f $NagiosRunFile; then
			$0 start
		else
			pid_nagios
			if status_nagios > /dev/null; then
				printf "Reloading nagios configuration..."
				killproc_nagios nagios -HUP
				echo "done"
			else
				$0 stop
				$0 start
			fi
		fi

		;;

	configtest)
		su - $NagiosUser -c "$NagiosBin -vp $NagiosCfgFile"
		
		;;
	*)
		echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig|configtest}"
		exit 1
		;;

esac
  
# End of this script

Re: Nagios 4.0.4 service won't start

Posted: Tue Mar 18, 2014 3:45 am
by goncalo.pereira
You can close this post, I found the solution in a very similar post http://support.nagios.com/forum/viewtop ... =7&t=26135