我只是在服务器机器上安装了nagios,只是在HTTP服务上遇到严重错误。
错误是
HTTP CRITICAL - Socket timeout after 10 seconds
我search这个错误,并得到了build议运行check_http更长的超时。 所以我在文件commands.cfg附加-t 20在“check_http”命令旁边。 重新启动nagios,但我仍然得到一个错误(新的超时)。
然后再search一下。 这个错误似乎很常见,所以我开始想我可能有其他一些问题。
我试着自己运行check_http:
root@srv$ /usr/libexec/nagios/check_http -H localhost -N -p 80 -t 1 HTTP OK: HTTP/1.1 200 OK - 846 bytes in 0.003 second response time |time=0.003080s;;;0.000000 size=846B;;;0
答案似乎没问题,但我对http的了解甚less。
任何线索?
编辑:从/etc/nagios/objects/commands.cfg采取的check_http的命令定义是
# 'check_http' command definition define command{ command_name check_http command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$ }
我不知道如何检查variables$ HOSTADDRESS $和更重要的是$ ARG1 $的值。
那么服务的定义是
define service{ use local-service ; Name of service template to use host_name localhost service_description HTTP check_command check_http notifications_enabled 1 }
分发是slackware 14.0 64bit。
您的检查命令与您的手动testing不符。
如果您希望Nagios以与您手动testing相同的方式执行检查,则由于检查命令的定义方式,您的服务定义必须如此:
define service{ use local-service host_name localhost service_description HTTP check_command check_http!-N -p 80 -t 1 notifications_enabled 1 }
…你也必须有“localhost”作为这个主机的地址。
(但是1秒的超时是短暂的。)
check_http插件只是尝试从外部IP加载网页。 请检查以确保可以在浏览器中加载网页,并且该插件在命令行上使用与您在configuration文件(FQDN或IP编号)中指定的完全相同的主机定义。
如果你真的检查本地主机,请尝试使用127.0.0.1,并尝试使用类似wget的东西来检查本地主机是否真的允许从本身加载网页( wget http://127.0.0.1 )。 这也适用于其他网站( wget http://www.yourdomain.com )。
你要求$ HOSTADDRESS $ $ HOSTNAME $的variables就像是要求HOST定义的字段ADDRESS一样,$ SERVICEXXXX $也一样。 $ ARG1 $是它期望的! 在你的命令定义中已经说过了。
在这个特殊情况下:
check_command check_http!-N -p 80 -t 1
$ ARG1 $ = -N -p 80 -t 1 // – p 80不是必须的,因为80是http的默认值。
希望这有助于你理解Nagiosmacros。