为什么在运行icinga时检查URL是否失败?

时间:2012-08-21 13:25:02

标签: nagios

我创建了自己的命令来检查特定的URL

define command{
    command_name    check_url
    command_line    /usr/lib/nagios/plugins/check_http -f follow -H '$HOSTNAME$' -I '$HOSTADDRESS$' -u '$ARG1$'
    }

如果我从命令行运行命令,它可以工作:

/usr/lib/nagios/plugins/check_http -f follow -H www.example.com -u http://www.example.com/server-status

HTTP OK: HTTP/1.1 200 OK - 4826 bytes in 0.011 second response time  |time=0.010625s;;;0.000000 size=4826B;;;0

但是当我遇到Icinga时,我正在接受

HTTP WARNING: HTTP/1.1 404 NOT FOUND - 314 bytes in 0.011 second response time 

3 个答案:

答案 0 :(得分:3)

我的猜测是针对-u选项的check_http插件,你应该在服务器名称之后提供附加的url而不是整个url。 实施例

/ usr/lib/nagios/plugins/check_http -f follow -H www.example.com -u /server-status

答案 1 :(得分:1)

您的手动测试不等同于您的命令定义。

与-H / -I的区别很微妙,但非常重要。

答案 2 :(得分:1)

当我遇到这样的问题时,Icinga正在抽象它是如何执行命令的,我发现有必要准确地找出Icinga正在执行的内容。我会按如下方式完成此任务:

将check_http移至临时位置

# mv /usr/lib/nagios/plugins/check_http /usr/lib/nagios/plugins/check_http_actual

创建一个Icinga将调用的bash脚本而不是实际的check_http脚本

# vi /usr/lib/nagios/plugins/check_http

在该文件中,创建这个简单的bash脚本,它只是回显它调用的命令行参数,然后退出:

#!/bin/bash
echo $@

然后,当然,让bash脚本可执行:

# chmod +x /usr/lib/nagios/plugins/check_http

现在在Icinga中,运行check_http命令。此时,Icinga Web界面中显示的返回状态将准确显示Icinga如何调用check_http。看到原始命令,应该明白Icinga做错了什么。一旦你纠正了Icinga的错误,你可以简单地将原来的check_http脚本移回原位:

# mv /usr/lib/nagios/plugins/{check_http_actual,check_http}