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