这是在Windows Server 2003 R2(Enterprise x64 Edition)上全新安装的NSClient ++,使用最新的稳定版 NSCP-0.4.1.105-x64.msi 。
D:\Program Files\NSClient++> nscp --version
000000014033F2A0, Version: 000000014033F248, Platform: 000000014033F218
我试图弄清楚如何使用 checkcpu 命令。首先,我正在尝试 alias_cpu ,它在 nsclient.ini 中预先定义为:
alias_cpu = checkCPU warn=80 crit=90 time=5m time=1m time=30s
这是我从控制台运行的命令:
D:\Program Files\NSClient++> nscp client --query alias_cpu
e tem\PDHCollector.cpp:185 Counter not found: cpu
ERROR: Could not get data for 5m please check log for details|
nsclient.log 显示:
2014-07-15 13:53:11: e:..\..\..\..\nscp\modules\CheckSystem\PDHCollector.cpp:185: Counter not found: cpu
切换实际命令的别名会产生相同的结果和日志条目:
D:\Program Files\NSClient++> nscp client --query checkCPU warn=80 crit=90 time=5m time=1m time=30s
e tem\PDHCollector.cpp:185 Counter not found: cpu
ERROR: Could not get data for 5m please check log for details|
其他形式的命令名称 checkcpu 和 check_cpu 也会产生相同的结果:
nscp client --query checkcpu warn=80 crit=90 time=5m time=1m time=30s
nscp client --query check_cpu warn=80 crit=90 time=5m time=1m time=30s
似乎配置正确:
D:\Program Files\NSClient++> nscp sys --validate
Listing configured counters
---------------------------
cpu = \238(_total)\6: ok-rate(0)
memory commit bytes = \4\26: ok(1.14462e+009)
memory commit limit = \4\30: ok(4.16999e+010)
uptime = \2\674: ok(680227)
---------------------------
Listed 4 of 4 counters.
我可以查询其他计数器:
D:\Program Files\NSClient++> nscp client --query checkcounter "\TCPv4\Connections
Established"
OK all counters within bounds.|'\TCPv4\Connections Established'=22
修改
我在文档 NSClient ++ Reference Manual.pdf 中找到了有关配置CheckSystem插件的部分。它说CPU负载的默认计数器是 \ Processor(_total)\%Processor Time ,我可以直接访问它:
D:\Program Files\NSClient++> nscp client --query checkcounter "\Processor(_total)\% Processor Time"
OK all counters within bounds.|'\Processor(_total)\% Processor Time'=0
知道 checkcpu 出了什么问题吗?
答案 0 :(得分:0)
我相信你现在已经弄明白了,但万一其他人来了...... 我没有能够完全重复你的问题,因为我没有2003 64bit主机,但它足够相似,我觉得它有帮助。
我的Windows 2008 Server R2 nsclient安装与您的NSCP-0.4.1.105-x64.msi相同
C:\Program Files\NSClient++>nscp --version
000000014033F2A0, Version: 000000014033F248, Platform: 000000014033F218
我的配置,关于你的cpu和别名,与我没有从原始配置更改它们完全相同。 命令在客户端模式下运行:
C:\Program Files\NSClient++>nscp client --query alias_cpu
e tem\PDHCollector.cpp:215 Invalid frequency: 0
ERROR: Could not get data for 5m please check log for details|
我将您的命令问题与您的命令进行了匹配。除了错误不同之外,我的结果与您为简洁起见未包含的其他测试相同。现在,我发现这很奇怪,因为这个客户端从我的nagios服务器工作正常,并通过alias_cpu报告cpu统计信息就好了。所以我试图查找我的错误,并从nsclient论坛http://www.nsclient.org/forums/topic/old-1169/
中找到此论坛帖子关于使用客户端模式的重要摘录,Michael Medin本人
不确定你要做什么,客户端模式有点不稳定 检查CPU / meme / *,因为它们需要运行集合线程 (在客户端模式下运行时通常不会这样做。)
更好的选择是: {{{nscp test
...
check_cpu time = 5m MaxWarn = 80}}}
哪个适合我。所以答案似乎是客户端应该按预期工作并尝试运行命令,因为我们两者都可能具有不一致和不可靠的结果。
答案 1 :(得分:0)
感谢Matt,确定为什么 nscp nsclient 不能与 check_cpu 命令一起使用。
我发现通过更改使用 nrpe 模块而不是 nsclient ,以下命令可用于监视本地系统上的CPU负载:
nscp nrpe --exec query -H 127.0.0.1 -c alias_cpu
请注意,这需要在nsclient.ini中设置 NRPEServer = 1 ,并且要定义您正在执行的命令,例如:
[/settings/external scripts/alias]
alias_cpu = checkCPU warn=100 crit=100 time=1 warn=95 crit=99 time=5 warn=90 crit=95 time=15