当 nagios 检测到 http 问题时,远程 http 重启

当 nagios 检测到 http 问题时,远程 http 重启

我正在寻找一个插件,如果 nagios 检测到远程 http 上存在问题,它将重新启动 http 到远程系统。这个插件可用吗?

答案1

您可以使用 nagios 事件处理程序执行此操作。

看一下文档中的这个例子:

define command{

    command_name    restart-httpd

    command_line    /usr/local/nagios/libexec/eventhandlers/restart-httpd  $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$

    }

这是处理程序:

#!/bin/sh

#

# Event handler script for restarting the web server on the local machine

#

# Note: This script will only restart the web server if the service is

#       retried 3 times (in a "soft" state) or if the web service somehow

#       manages to fall into a "hard" error state.

#





# What state is the HTTP service in?

case "$1" in

OK)

    # The service just came back up, so don't do anything...

    ;;

WARNING)

    # We don't really care about warning states, since the service is probably still running...

    ;;

UNKNOWN)

    # We don't know what might be causing an unknown error, so don't do anything...

    ;;

CRITICAL)

    # Aha!  The HTTP service appears to have a problem - perhaps we should restart the server...



    # Is this a "soft" or a "hard" state?

    case "$2" in



    # We're in a "soft" state, meaning that Nagios is in the middle of retrying the

    # check before it turns into a "hard" state and contacts get notified...

    SOFT)



        # What check attempt are we on?  We don't want to restart the web server on the first

        # check, because it may just be a fluke!

        case "$3" in



        # Wait until the check has been tried 3 times before restarting the web server.

        # If the check fails on the 4th time (after we restart the web server), the state

        # type will turn to "hard" and contacts will be notified of the problem.

        # Hopefully this will restart the web server successfully, so the 4th check will

        # result in a "soft" recovery.  If that happens no one gets notified because we

        # fixed the problem!

        3)

            echo -n "Restarting HTTP service (3rd soft critical state)..."

            # Call the init script to restart the HTTPD server

            /etc/rc.d/init.d/httpd restart

            ;;

            esac

        ;;



    # The HTTP service somehow managed to turn into a hard error without getting fixed.

    # It should have been restarted by the code above, but for some reason it didn't.

    # Let's give it one last try, shall we?  

    # Note: Contacts have already been notified of a problem with the service at this

    # point (unless you disabled notifications for this service)

    HARD)

        echo -n "Restarting HTTP service..."

        # Call the init script to restart the HTTPD server

        /etc/rc.d/init.d/httpd restart

        ;;

    esac

    ;;

esac

exit 0

更多细节:http://nagios.sourceforge.net/docs/3_0/eventhandlers.html

相关内容