我正在尝试使用 Nagios (3.0.1) 监视 MSMQ 队列计数器。远程服务器正在运行 NC_Net。check_command 配置如下所示:
check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
这行不通。我相信美元符号需要转义,但我无法弄清楚如何转义。
本文建议使用“$$”,即。
check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private"$$"\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
但这不起作用。我尝试了其他一些方法(反斜杠、单引号等)。
有什么建议么?
编辑:
我一直在通过命令行进行一些测试,这是我认为是 $ 导致问题的原因之一。以下作品:
./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(Computer Queues)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
但这不是:
./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
我还使用 ECHO 来查看这些命令是如何扩展的,但这对我没有帮助。
编辑:
原来它不是美元符号。见下文。
您可以在 nagios.cfg 中启用完全调试以查看该命令实际扩展为什么,这将显示美元符号是否确实是问题所在。为此,请设置以下内容:
如果您有很多检查,则需要设置最大调试文件大小,因为在该详细程度和级别下,日志会很快填满。
他们可能(例如):
然后,您将需要运行检查,同时跟踪日志。您可能还想用 'check_nt' 之类的东西将尾巴通过管道传递给 grep,这样您就可以减少噪音。
我相信您需要使用 \ 来转义字符,但以下链接显示您可能需要两个 \
希望这会有所帮助->链接<-
我发现远程服务器上的 NC_Net 记录到 Windows 事件日志中。查看错误,我开始认为这不是美元符号的问题:
我已经进行了几次测试(我预计会失败)。首先,我将计数器名称指定为“\MSMQ Queue(servername)\Messages in Queue”
产生的错误是:
在这种情况下,它找不到计数器实例。对于第二个,我指定了“\MSMQ Queue(servername\test1)\Messages in Queue”
在这种情况下,它找不到计数器。
在我看来,由于“servername\test1”中的\,NC_Net 正在以不同的方式解析计数器名称。
编辑:
问题是由于计数器实例名称中的 \。我发现有一种用于指定计数器名称的替代语法,因此以下工作: