Monitoring 使用Nagios监视URL
我正试图用Nagios监控实际的URL,而不仅仅是主机,因为我使用多个网站运行一个共享服务器,我认为仅仅监控基本的HTTP服务是不够的(我在这个问题的最底层对我的设想做了一个小的解释) (旁注:请注意,我在CentOS系统的chroot中安装并运行了Nagios。我从源代码构建了Nagios,并使用yum将所有需要的依赖项安装到此根目录中,等等。)Monitoring 使用Nagios监视URL,monitoring,nagios,Monitoring,Nagios,我正试图用Nagios监控实际的URL,而不仅仅是主机,因为我使用多个网站运行一个共享服务器,我认为仅仅监控基本的HTTP服务是不够的(我在这个问题的最底层对我的设想做了一个小的解释) (旁注:请注意,我在CentOS系统的chroot中安装并运行了Nagios。我从源代码构建了Nagios,并使用yum将所有需要的依赖项安装到此根目录中,等等。) 我第一次发现,但在将其安装到/usr/lib/nagios/libexec中之后,我一直收到一个“返回码255超出范围”错误。就在那时,我决定开始
我第一次发现,但在将其安装到/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):
(顺便提一下,您还可以在问题的最底部查看我在服务配置文件中使用的内容)
然而,在发表这个问题之前,我决定再给我一次机会找出一个解决方案。我找到了插件,并决定试一试。为此,我做了如下工作:
所以在这一点上,我放弃了,我有几个问题:
在这个问题的开始,我提到我将包括一个小的解释我的设想。我有一个名为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的消息