Monitoring 使用Nagios监视URL

Monitoring 使用Nagios监视URL,monitoring,nagios,Monitoring,Nagios,我正试图用Nagios监控实际的URL,而不仅仅是主机,因为我使用多个网站运行一个共享服务器,我认为仅仅监控基本的HTTP服务是不够的(我在这个问题的最底层对我的设想做了一个小的解释) (旁注:请注意,我在CentOS系统的chroot中安装并运行了Nagios。我从源代码构建了Nagios,并使用yum将所有需要的依赖项安装到此根目录中,等等。) 我第一次发现,但在将其安装到/usr/lib/nagios/libexec中之后,我一直收到一个“返回码255超出范围”错误。就在那时,我决定开始

我正试图用Nagios监控实际的URL,而不仅仅是主机,因为我使用多个网站运行一个共享服务器,我认为仅仅监控基本的HTTP服务是不够的(我在这个问题的最底层对我的设想做了一个小的解释)

(旁注:请注意,我在CentOS系统的chroot中安装并运行了Nagios。我从源代码构建了Nagios,并使用yum将所有需要的依赖项安装到此根目录中,等等。)


我第一次发现,但在将其安装到/usr/lib/nagios/libexec中之后,我一直收到一个“返回码255超出范围”错误。就在那时,我决定开始写这个问题(等等!我决定先试试另一个插件!)

在回顾了几乎与我在check_url中遇到的问题相同的问题之后,我决定就这个问题提出一个新的问题,因为 a) 我没有在这张支票上使用NRPE b) 我尝试了就我之前提到的问题提出的建议,但没有一个有效。例如

./check_url some-domain.com | echo $0
返回“0”(表示检查成功)

然后,我按照t上的调试说明创建了一个名为debug\u check\u url的临时文件,并将以下内容放入其中(然后由我的命令定义调用):

假设我没有处于“调试模式”,我运行check_url的命令定义如下(inside command.cfg):

(顺便提一下,您还可以在问题的最底部查看我在服务配置文件中使用的内容)


然而,在发表这个问题之前,我决定再给我一次机会找出一个解决方案。我找到了插件,并决定试一试。为此,我做了如下工作:

  • mkdir/usr/lib/nagios/libexec/check\u url\u status/
  • 下载了check_url_status和utils.pm
  • 根据用户在check_url_status plugin页面上的评论/评论,我将“lib”更改为正确的目录/usr/lib/nagios/libexec/
  • 运行以下命令:

    /检查用户状态-U some-domain.com。 当我运行上述命令时,我不断得到以下错误:

  • bash-4.1./检查url状态-U mydomain.com 无法在@INC(@INC-contains:/usr/lib/nagios/libexec//usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor\u perl/usr/share/perl5/vendor\u perl/usr/lib/perl5)中找到utils.pm。/check\u url\u状态行34。 开始失败--编译在./check\u url\u状态行34处中止


    所以在这一点上,我放弃了,我有几个问题:

  • 您推荐这两个插件中的哪一个?检查url或检查url状态? (在阅读了check_url_status的描述后,我觉得这个可能是更好的选择。你的想法是什么?)
  • 现在,我如何使用您推荐的插件解决问题?

  • 在这个问题的开始,我提到我将包括一个小的解释我的设想。我有一个名为services.cfg的文件,我所有的服务定义都位于这个文件中(想象一下!)

    下面是我的服务定义文件的一个片段,我编写该文件是为了使用check_url(因为当时我认为一切都正常)。我将为要监视的每个URL构建一个服务:

    ###
    # Monitoring Individual URLs...
    #
    ###
    define service{
            host_name                       {my-shared-web-server}
            service_description             URL: somedomain.com
            check_command                   check_url!somedomain.com
            max_check_attempts              5
            check_interval                  3
            retry_interval                  1
            check_period                    24x7
            notification_interval           30
            notification_period             workhours
    }
    

    我把事情弄得太复杂了

    内置/默认安装的插件check_http可以实现我想要的以及更多。我是如何做到这一点的:

    我的服务定义:

    #!/bin/sh
    echo `date` >> /tmp/debug_check_url_plugin
    echo $*  /tmp/debug_check_url_plugin
    /usr/local/nagios/libexec/check_url $*
    
      define service{
                host_name                       myers
                service_description             URL: my-url.com
                check_command                   check_http_url!http://my-url.com
                max_check_attempts              5
                check_interval                  3
                retry_interval                  1
                check_period                    24x7
                notification_interval           30
                notification_period             workhours
        }
    
    define command{
            command_name    check_http_url
            command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
    }
    
    我的命令定义:

    #!/bin/sh
    echo `date` >> /tmp/debug_check_url_plugin
    echo $*  /tmp/debug_check_url_plugin
    /usr/local/nagios/libexec/check_url $*
    
      define service{
                host_name                       myers
                service_description             URL: my-url.com
                check_command                   check_http_url!http://my-url.com
                max_check_attempts              5
                check_interval                  3
                retry_interval                  1
                check_period                    24x7
                notification_interval           30
                notification_period             workhours
        }
    
    define command{
            command_name    check_http_url
            command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
    }
    

    监视URL的更好方法是使用webinject,它可以与nagios一起使用

    下面的问题是由于您没有perl包utils,请尝试安装它


    bash-4.1#/check_url_status-U mydomain.com无法在@INC中找到utils.pm(@INC包含:

    您可以制作一个脚本插件。很简单,您只需使用以下内容检查url:

    `curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`
    
    $URL是通过param传递给脚本命令的内容

    然后检查结果:如果您的代码大于399,您就有问题,否则…一切正常!然后是正确的退出模式和Nagios的消息