Problemes after to upgrade to Nagios XI 5.5.2

This support forum board is for support questions relating to Nagios XI, our flagship commercial network monitoring solution.
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Problemes after to upgrade to Nagios XI 5.5.2

Post by scottwilkerson »

Can you send in a copy of your /etc/init.d/nagios

Thanks
Former Nagios employee
Creator:
ahumandesign.com
enneagrams.com
morabanc
Posts: 199
Joined: Tue Jul 10, 2012 8:14 am

Re: Problemes after to upgrade to Nagios XI 5.5.2

Post by morabanc »

Hi scottwilkerson,

Here you are:

Code: Select all

#!/bin/bash
#
# chkconfig: 345 99 01
# description: Nagios network monitor
# processname: nagios
# File : nagios
#
# Author : Jorge Sanchez Aymar (jsanchez@lanchile.cl)
#
# Changelog :
#
# 1999-07-09 Karl DeBisschop <kdebisschop@infoplease.com>
#  - setup for autoconf
#  - add reload function
# 1999-08-06 Ethan Galstad <egalstad@nagios.org>
#  - Added configuration info for use with RedHat's chkconfig tool
#    per Fran Boon's suggestion
# 1999-08-13 Jim Popovitch <jimpop@rocketship.com>
#  - added variable for nagios/var directory
#  - cd into nagios/var directory before creating tmp files on startup
# 1999-08-16 Ethan Galstad <egalstad@nagios.org>
#  - Added test for rc.d directory as suggested by Karl DeBisschop
# 2000-07-23 Karl DeBisschop <kdebisschop@users.sourceforge.net>
#  - Clean out redhat macros and other dependencies
# 2003-01-11 Ethan Galstad <egalstad@nagios.org>
#  - 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
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Starts and stops the Nagios monitoring server
# Description:          Starts and stops the Nagios monitoring server
### END INIT INFO

# Note: This init.d file has configuration changes from the default Nagios Core file

# Our install-time configuration.
prefix=/usr/local/nagios
exec_prefix=${prefix}
NagiosBin=${exec_prefix}/bin/nagios
NagiosCfgFile=${prefix}/etc/nagios.cfg
NagiosCfgtestFile=${prefix}/var/nagios.configtest
NagiosStatusFile=${prefix}/var/status.dat
NagiosRetentionFile=${prefix}/var/retention.dat
NagiosCommandFile=${prefix}/var/rw/nagios.cmd
NagiosVarDir=${prefix}/var
NagiosRunFile=/usr/local/nagios/var/nagios.lock
NagiosCGIDir=${exec_prefix}/sbin
NagiosUser=nagios
NagiosGroup=nagios
checkconfig="true"


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

# 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 "${RAMDISK_DIR} type tmpfs"`
        if [ "$ramdisk"X == "X" ]; then
                if [ ! -d ${RAMDISK_DIR} ]; then
                        mkdir -p -m 0755 ${RAMDISK_DIR}
                        if [ -d ${RAMDISK_DIR} ]; then
                                NagiosUserUID=`id -u ${NagiosUser}`
                                NagiosGroupGID=`id -g ${NagiosGroup}`
                                mount -t tmpfs -o uid=${NagiosUserUID},gid={$NagiosGroupGID},size=${RAMDISK_SIZE}m tmpfs ${RAMDISK_DIR}
                                su ${NagiosUser} -c "mkdir -m 0755 ${RAMDISK_DIR}/checkresults"
                        else
                                echo "ERROR: Unable to create ramdisk directory (${RAMDISK_DIR})"
                                exit 1
                        fi
                fi
        fi
fi


check_config ()
{
        if test "$checkconfig" != "true"; then
                return 0
        fi

        rm -f "$NagiosCfgtestFile";
        if test -e "$NagiosCfgtestFile"; then
                echo "ERROR: Could not delete '$NagiosCfgtestFile'"
                exit 8
        fi
        if ! su $NagiosUser -c "touch $NagiosCfgtestFile"; then
                echo "ERROR: Could not create or update '$NagiosCfgtestFile'"
                exit 8
        fi

        TMPFILE=$(mktemp /tmp/.configtest.XXXXXXXX)
        $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" > $NagiosCfgtestFile
                rm "$TMPFILE"
                return 0
        elif test "${ERR}" = "0"; then
                # Write the errors to a file we can have a script watching for.
                echo "WARNING: Warnings in config files - see log for details: $NagiosCfgtestFile" > $NagiosCfgtestFile
                egrep -i "(^warning|^error)" "$TMPFILE" >> $NagiosCfgtestFile
                rm "$TMPFILE"
                return 0
        else
                # Write the errors to a file we can have a script watching for.
                echo "ERROR: Errors in config files - see log for details: $NagiosCfgtestFile" > $NagiosCfgtestFile
                egrep -i "(^warning|^error)" "$TMPFILE" >> $NagiosCfgtestFile
                cat "$TMPFILE"
                exit 8
        fi
}


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

        return 1
}

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

killproc_nagios ()
{
        kill -s "$1" $NagiosPID
}

pid_nagios ()
{
        if test ! -f $NagiosRunFile; then
                echo "No lock file found in $NagiosRunFile"
                return 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: "

                check_config

                if test -f $NagiosRunFile; then
                        NagiosPID=`head -n 1 $NagiosRunFile`
                        if status_nagios; then
                                echo "another instance of nagios is already running."
                                exit 0
                        fi
                fi

                su $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
                rm -f $NagiosCommandFile
                touch $NagiosRunFile
                $NagiosBin -d $NagiosCfgFile

                echo "done."
                ;;

        stop)
                echo -n "Stopping nagios: "

                pid_nagios
                if [ $? -eq 1 ]; then
                        exit 0
                fi
                killproc_nagios TERM

                # 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..90}; 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 - Killing it!"
                        killproc_nagios KILL
                else
                        echo "done."
                fi

                rm -f $NagiosStatusFile $NagiosRunFile $NagiosCommandFile
                ;;

        status)
                pid_nagios
                if [ $? -eq 1 ]; then
                        exit 3
                fi
                printstatus_nagios
                ;;

        checkconfig)
                check_config

                if [ $? -eq 0 ]; then
                        echo "OK."
                else
                        echo "CONFIG ERROR!  Check your Nagios configuration."
                        exit 1
                fi
                ;;

        restart)
                check_config

                $0 stop
                $0 start
                ;;

        reload|force-reload)
                check_config

                if test ! -f $NagiosRunFile; then
                        $0 start
                else
                        pid_nagios
                        if status_nagios > /dev/null; then
                                echo -n "Reloading nagios configuration... "
                                killproc_nagios HUP
                                echo "done"
                        else
                                $0 stop
                                $0 start
                        fi
                fi
                ;;

        configtest)
                $NagiosBin -vp $NagiosCfgFile
                ;;

        *)
                echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig|configtest}"
                exit 1
                ;;

esac

# End of this script

Thanks
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Problemes after to upgrade to Nagios XI 5.5.2

Post by scottwilkerson »

Edit your init script to the following

Code: Select all

    #!/bin/bash
    #
    # chkconfig: 345 99 01
    # description: Nagios network monitor
    # processname: nagios
    # File : nagios
    #
    # Author : Jorge Sanchez Aymar (jsanchez@lanchile.cl)
    #
    # Changelog :
    #
    # 1999-07-09 Karl DeBisschop <kdebisschop@infoplease.com>
    #  - setup for autoconf
    #  - add reload function
    # 1999-08-06 Ethan Galstad <egalstad@nagios.org>
    #  - Added configuration info for use with RedHat's chkconfig tool
    #    per Fran Boon's suggestion
    # 1999-08-13 Jim Popovitch <jimpop@rocketship.com>
    #  - added variable for nagios/var directory
    #  - cd into nagios/var directory before creating tmp files on startup
    # 1999-08-16 Ethan Galstad <egalstad@nagios.org>
    #  - Added test for rc.d directory as suggested by Karl DeBisschop
    # 2000-07-23 Karl DeBisschop <kdebisschop@users.sourceforge.net>
    #  - Clean out redhat macros and other dependencies
    # 2003-01-11 Ethan Galstad <egalstad@nagios.org>
    #  - 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
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Starts and stops the Nagios monitoring server
    # Description:          Starts and stops the Nagios monitoring server
    ### END INIT INFO

    # Note: This init.d file has configuration changes from the default Nagios Core file

    # Our install-time configuration.
    prefix=/usr/local/nagios
    exec_prefix=${prefix}
    NagiosBin=${exec_prefix}/bin/nagios
    NagiosCfgFile=${prefix}/etc/nagios.cfg
    NagiosCfgtestFile=${prefix}/var/nagios.configtest
    NagiosStatusFile=${prefix}/var/status.dat
    NagiosRetentionFile=${prefix}/var/retention.dat
    NagiosCommandFile=${prefix}/var/rw/nagios.cmd
    NagiosVarDir=${prefix}/var
    NagiosRunFile=/usr/local/nagios/var/nagios.lock
    NagiosCGIDir=${exec_prefix}/sbin
    NagiosUser=nagios
    NagiosGroup=nagios
    checkconfig="true"


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

    # 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 "${RAMDISK_DIR} type tmpfs"`
            if [ "$ramdisk"X == "X" ]; then
                    if [ ! -d ${RAMDISK_DIR} ]; then
                            mkdir -p -m 0755 ${RAMDISK_DIR}
                            if [ -d ${RAMDISK_DIR} ]; then
                                    NagiosUserUID=`id -u ${NagiosUser}`
                                    NagiosGroupGID=`id -g ${NagiosGroup}`
                                    mount -t tmpfs -o uid=${NagiosUserUID},gid={$NagiosGroupGID},size=${RAMDISK_SIZE}m tmpfs ${RAMDISK_DIR}
                                    su ${NagiosUser} -c "mkdir -m 0755 ${RAMDISK_DIR}/checkresults"
                            else
                                    echo "ERROR: Unable to create ramdisk directory (${RAMDISK_DIR})"
                                    exit 1
                            fi
                    fi
            fi
    fi


    check_config ()
    {
            if test "$checkconfig" != "true"; then
                    return 0
            fi

            rm -f "$NagiosCfgtestFile";
            if test -e "$NagiosCfgtestFile"; then
                    echo "ERROR: Could not delete '$NagiosCfgtestFile'"
                    exit 8
            fi
            if ! su $NagiosUser -c "touch $NagiosCfgtestFile"; then
                    echo "ERROR: Could not create or update '$NagiosCfgtestFile'"
                    exit 8
            fi

            TMPFILE=$(mktemp /tmp/.configtest.XXXXXXXX)
            $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" > $NagiosCfgtestFile
                    rm "$TMPFILE"
                    return 0
            elif test "${ERR}" = "0"; then
                    # Write the errors to a file we can have a script watching for.
                    echo "WARNING: Warnings in config files - see log for details: $NagiosCfgtestFile" > $NagiosCfgtestFile
                    egrep -i "(^warning|^error)" "$TMPFILE" >> $NagiosCfgtestFile
                    rm "$TMPFILE"
                    return 0
            else
                    # Write the errors to a file we can have a script watching for.
                    echo "ERROR: Errors in config files - see log for details: $NagiosCfgtestFile" > $NagiosCfgtestFile
                    egrep -i "(^warning|^error)" "$TMPFILE" >> $NagiosCfgtestFile
                    cat "$TMPFILE"
                    exit 8
            fi
    }


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

            return 1
    }

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

    killproc_nagios ()
    {
            kill -s "$1" $NagiosPID
    }

    pid_nagios ()
    {
            if test ! -f $NagiosRunFile; then
                    echo "No lock file found in $NagiosRunFile"
                    return 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: "

                    check_config

                    if test -f $NagiosRunFile; then
                            NagiosPID=`head -n 1 $NagiosRunFile`
                            if status_nagios; then
                                    echo "another instance of nagios is already running."
                                    exit 0
                            fi
                    fi

                    su $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
                    rm -f $NagiosCommandFile
                    su $NagiosUser -c "touch $NagiosRunFile"
                    $NagiosBin -d $NagiosCfgFile

                    echo "done."
                    ;;

            stop)
                    echo -n "Stopping nagios: "

                    pid_nagios
                    if [ $? -eq 1 ]; then
                            exit 0
                    fi
                    killproc_nagios TERM

                    # 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..90}; 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 - Killing it!"
                            killproc_nagios KILL
                    else
                            echo "done."
                    fi

                    rm -f $NagiosStatusFile $NagiosRunFile $NagiosCommandFile
                    ;;

            status)
                    pid_nagios
                    if [ $? -eq 1 ]; then
                            exit 3
                    fi
                    printstatus_nagios
                    ;;

            checkconfig)
                    check_config

                    if [ $? -eq 0 ]; then
                            echo "OK."
                    else
                            echo "CONFIG ERROR!  Check your Nagios configuration."
                            exit 1
                    fi
                    ;;

            restart)
                    check_config

                    $0 stop
                    $0 start
                    ;;

            reload|force-reload)
                    check_config

                    if test ! -f $NagiosRunFile; then
                            $0 start
                    else
                            pid_nagios
                            if status_nagios > /dev/null; then
                                    echo -n "Reloading nagios configuration... "
                                    killproc_nagios HUP
                                    echo "done"
                            else
                                    $0 stop
                                    $0 start
                            fi
                    fi
                    ;;

            configtest)
                    $NagiosBin -vp $NagiosCfgFile
                    ;;

            *)
                    echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig|configtest}"
                    exit 1
                    ;;

    esac

    # End of this script
then run

Code: Select all

service nagios stop
rm -f /usr/local/nagios/var/nagios.lock
service nagios start
This should create the lock file as the nagios user so it can update it properly
Former Nagios employee
Creator:
ahumandesign.com
enneagrams.com
morabanc
Posts: 199
Joined: Tue Jul 10, 2012 8:14 am

Re: Problemes after to upgrade to Nagios XI 5.5.2

Post by morabanc »

Hi Scott, it worked !! :)

Thanks a lot
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Problemes after to upgrade to Nagios XI 5.5.2

Post by scottwilkerson »

morabanc wrote:Hi Scott, it worked !! :)

Thanks a lot
Great!

Locking thread
Former Nagios employee
Creator:
ahumandesign.com
enneagrams.com
Locked