Nagios尽pipe在关键时刻显示“OK”状态

我正在使用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套接字

我@ 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”时返回退出代码?