我对 Nagios 有疑问,特别是用于检查 Windows 服务器上 Citrix 连接的 check_tcp 插件。Nagios 的版本是 3.3.1,而 nagios 插件的版本是 1.4.15(似乎是最新版本)。
当连接正常时,服务状态为正常,状态信息为:“TCP OK”。但是当 Citrix 服务没有响应时,服务状态仍然为正常,状态信息为:“连接被拒绝”,这清楚地表明 Citrix 连接不正常。
还有一件事,当手动启动检查命令时,它返回 0,这解释了 Web 界面上的 OK 状态,而它必须返回 1 或其他内容来指示错误。
有人已经遇到过同样的问题吗?我能做些什么来纠正这个检查吗?
提前致谢,
杰里米
答案1
我不确定我们是否对这个问题有足够的了解,因此无法下定论。这不是check_tcp
插件的正常行为:
[madhatta@nagios plugins]$ ./check_tcp -H localhost -p 1234
Connection refused
[madhatta@nagios plugins]$ echo $?
2
[madhatta@nagios plugins]$
您能告诉我们手动调用插件时会发生什么吗?您的 NAGIOS 现在如何调用它?
编辑:那么您将不得不仔细研究您的 NAGIOS 配置,从check_command
服务定义中的条目开始,到命令定义文件,直到我们确切知道正在运行什么磁盘命令以及使用什么标志。
编辑2:我怀疑问题出在管道上。我不知道是谁决定| sed 's/,/./g'
要添加这个,也不知道为什么,但是管道的退出状态是其中最后一个命令的退出状态. 将其与上面的输出进行比较:
[madhatta@nagios plugins]$ ./check_tcp -H localhost -p 1234 | sed 's/n/N/g'
CoNNectioN refused
[madhatta@nagios plugins]$ echo $?
0
[madhatta@nagios plugins]$
作为管道中的最后一个命令sed
,运行正常,因此管道的退出状态为 0,意思是“是的,我很好”,导致 NAGIOS 说“是的,一切都很好”。
如果您觉得必须进行整理,则需要编写一个 shell 脚本来执行实际的操作check_tcp
,保存终止状态和输出,输出通过 sed 运行的输出,但以存储的终止状态终止。更好的是,不要再担心点和逗号,而开始担心服务器是否已关闭。
答案2
检查您的服务器上是否已将其添加-r
为 tcp_check 命令的选项。
-r, --refuse=ok|warn|crit
Accept TCP refusals with states ok, warn, crit (default: crit)