0

我创建了自己的命令来检查特定的 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 
4

3 回答 3

3

我的猜测是用于 -u 选项的 check_http 插件,您应该提供附加在服务器名称之后的 url,而不是整个 url。前任。

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

于 2012-12-27T06:11:37.773 回答
1

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

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

于 2012-09-26T17:48:21.090 回答
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}
于 2016-03-07T22:55:49.723 回答