使用 Nagios 监控 URL

标签 monitoring nagios

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

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

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

审核后This Question这几乎与我在 check_url 上遇到的问题相同,我决定就该主题提出一个新问题,因为
a) 我没有在此检查中使用 NRPE
b)我尝试了对我链接到的早期问题提出的建议,但没有一个有效。例如...

./check_url some-domain.com | echo $0

返回“0”(表示检查成功)

然后我按照 Nagios Suppor 上的调试说明进行操作。 t 创建一个名为 debug_check_url 的临时文件,并将以下内容放入其中(然后由我的命令定义调用):
#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $*  /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*

假设我不在“ Debug模式”,我运行 check_url 的命令定义如下(在 command.cfg 中):
'check_url' command definition
define command{
       command_name    check_url
       command_line    $USER1$/check_url $url$
}

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

然而,在发布这个问题之前,我决定再尝试一次找出解决方案。我找到了 check_url_status插件,并决定试一试。为此,这就是我所做的:
  • mkdir/usr/lib/nagios/libexec/check_url_status/
  • 下载了 check_url_status 和 utils.pm
  • 根据 check_url_status 插件页面上的用户评论/评论,我将“lib”更改为/usr/lib/nagios/libexec/的正确目录。
  • 运行以下命令:

    ./check_user_status -U some-domain.com。
    当我运行上述命令时,我不断收到以下错误:

  • bash-4.1# ./check_url_status -U mydomain.com Can't locate utils.pm in @INC (@INC contains: /usr/lib/nagios/libexec/ /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5) at ./check_url_status line 34. BEGIN failed--compilation aborted at ./check_url_status line 34.



    所以在这一点上,我放弃了,有几个问题:
  • 你会推荐这两个插件中的哪一个? check_url 或 check_url_status?
    (看了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,可以完成我想要的等等。以下是我如何做到这一点:

    我的服务定义:

      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$
    }
    

    关于使用 Nagios 监控 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9246557/

    相关文章:

    java - 如何监控 Java 进程的性能?

    windows - 无需任何第三方即可自行扩展的 Azure 应用程序的模式是什么?

    javascript - 检测国外网站参数变化

    linux - 我可以从一个网络数据实例监控四台服务器吗?

    linux - check_snmp_mem.pl 中的内存使用值是如何得出的?

    winapi - 如何监控对应用程序/服务的 Windows API 调用?

    json - 根据条件添加到 JSON ($payload={})

    linux - 如何创建 Nagios 监视器

    Nagios:如何一天三次检查服务