我正在尝试使用 Nagios 监控实际的 URL,而不仅仅是主机,因为我与多个网站运行共享服务器,我认为仅监控基本的 HTTP 服务是不够的(我包括这个问题的底部是对我的设想的一个小解释)。
(旁注:请注意,我在 CentOS 系统的 chroot 中安装并运行了 Nagios。我从源代码构建了 nagios,并使用 yum 将所有需要的依赖项安装到此根目录中,等等...)
我首先找到了check_url,但是在将其安装到 /usr/lib/nagios/libexec 之后,我一直收到“255 的返回码超出范围”错误。就在那时我决定开始写这个问题(但是等等!我决定先尝试另一个插件!)
在查看了这个几乎与我在 check_url 上遇到的问题几乎相同的问题后,我决定就该主题提出一个新问题,因为 a)我没有在此检查中使用 NRPE b)我尝试了关于我链接到的早期问题,但没有一个有效。例如...
./check_url some-domain.com | echo $0
返回“0”(表示检查成功)
然后我按照Nagios Support 上的调试说明创建了一个名为 debug_check_url 的临时文件,并将以下内容放入其中(然后由我的命令定义调用):
#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $* /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*
假设我不在“调试模式”,我运行 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 在@INC 中找不到utils.pm(@INC 包含:/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) 在 ./check_url_status 第 34 行。BEGIN failed - 编译在 ./check_url_status 第 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
}