我正在使用nagios监视我们的生产环境中的各种服务。 但是对于一个这样的服务,我注意到,即使服务closures,nagios仍然显示“OK”状态。 我正在使用check_http插件来实现相同的。 在服务器的cli上运行check命令,得到如下结果。 我注意到返回的退出状态代码是2,表示nagios的CRITICAL状态。 但是,显示的状态是“OK”。 任何关于如何处理这个问题的指针非常感谢。 提前致谢。
me @ myserver:〜$ check_http -H localhost -p 8180 -u / SomeService / services?_wadl
拒绝连接
HTTP关键 – 无法打开TCP套接字
- 由于某种原因,Nagios的“长期服务输出”因此而受到欢迎
- 计划时check_smtp不工作
- Nagios:为整个主机组指定一个联系人组?
- 从远程pipe理主机调用NRPE命令不起作用
- 如果nagios / icinga检查失败,输出附加信息
我@ myserver:〜$ echo $?
2
您的手动testing与Nagios正在做的不匹配。
最有可能的是,你传递ARG到check_http被忽略。 将您正在使用的服务check_command的命令定义与手动testing进行比较。
如果您还没有,请务必阅读macros的文档页面及其工作原理 。
感谢基思和丹尼尔的指点。 我想出了解决问题的办法。
在NConf中configuration的检查命令URLpath参数是
/ SomeService /服务?_wadl&_type = XML
但是,在服务器上检查/ var / log / syslog,我可以发现实际上正在执行的URLpath是/ SomeService / services?_wadl(请注意剥离“type = xml”部分)。
在使用这两个URLpath分别运行check命令时,我注意到,我不得不点击“Enter”键来获取包含“type = xml”的URL的命令的退出状态,这就解释了为什么nagios从来没有得到退出状态2.而另一个URL在没有任何手动干预的情况下返回退出状态。
me @ myserver:$ check_http -H localhost -p 8180 -u / SomeService / services?_wadl&_type = xml
[1] 3543
我@ myserver:$连接被拒绝
HTTP关键 – 无法打开TCP套接字
[按Enter键,然后我得到我的退出状态]
[1] +退出2 check_http -H localhost -p 8180 -u / SomeService / services?_wadl
me @ myserver:$ check_http -H localhost -p 8180 -u / SomeService / services?_wadl
拒绝连接
HTTP关键 – 无法打开TCP套接字
[我立即得到我的退出状态没有手动干预]
将Nconf中的URLpath更改为/ SomeService / services?_wadl,我开始获得正确的退出状态,并且在服务实际发生故障时,nagios开始报告CRITICAL。 但我仍然想知道,为什么check_http插件等待用户干预,当URL包含“&_type = xml”时返回退出代码?