check_nt
我遇到了一个奇怪的问题:我在 Debian 机器上设置的Icinga(nagios)无法运行。
我所做的是安排对NSClient_version
和进行强制检查PING
。如果我查看日志文件,我可以看到这两个命令都计划运行:
[1372774536] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;sqlnota03.dbb.dk;NSClient_version;1372781738
[1372774536] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;sqlnota03.dbb.dk;PING;1372781738
打开调试后,我得到了以下信息:
[1372774536.502948] [016.2] [pid=3840] Found another service check event for service 'NSClient_version' on host 'sqlnota03.dbb.dk' @ Tue Jul 2 17:47:21 2013
[1372774536.502973] [016.2] [pid=3840] Keeping original service check event (ignoring the new one).
我已多次检查过配置,没有发现任何错误,并且 Icinga 在运行时报告配置正常icinga -v <icinga.cfg>
。
有谁能发现我做错什么吗?
配置如下:
define host {
use windows-server
host_name <the host>
address 192.168.1.61
hostgroups mssql, termsrv, windows, nsclient_version
}
define service {
use generic-service
hostgroup_name nsclient_version
service_description NSClient_version
servicegroups nsclient_version
check_command check_nt!CLIENTVERSION
}
# 'check_nt' command definition
define command {
command_name check_nt
command_line check_nt command_line /usr/lib/nagios/plugins/check_nt -p12489 -s <snip> -H '$HOSTADDRESS$' -v '$ARG1$' '$ARG2' '$ARG3'
}
似乎系统中的某处有一个服务检查卡住了,导致 Icinga 无法运行新的服务检查?!?
我已经check_nt
用一个小脚本替换了应该运行的命令,该脚本只需接触本地文件即可/tmp
查看它是否正在运行。但事实并非如此。
编辑
我使用旧的 nagios 网络界面来安排新的检查并(最终)得到了以下结果:
Processing: 'SERVICE ALERT: sqlnota03.db
b.dk;NSClient_version;$SERVICESTATE$;$SERVICESTATETYPE$;$SERVICEATTEMPT$;为服务 NSClient_version 定义的命令不存在
现在我不确定该消息是什么意思——check_nt
找不到可执行文件还是其他什么……?
答案1
我发现了错误。
这是两件事的结合:
- Icinga-web 没有正确安排检查。出于某种原因,它只是忽略了检查命令(我稍后会研究这个问题)。
- 一旦我安排了检查,很明显
command_line
参数的路径是错误的。
所以我改变了这个:
command_line check_nt command_line /usr/lib/nagios/plugins/check_nt -p12489 -s <snip> -H '$HOSTADDRESS$' -v '$ARG1$' '$ARG2' '$ARG3'
对此:
command_line /usr/lib/nagios/plugins/check_nt -p12489 -s <snip> -H '$HOSTADDRESS$' -v '$ARG1$' '$ARG2' '$ARG3'
我很惊讶让 Icinga 运行实际检查以便我能够诊断错误需要花费这么多时间。