Nagios:无法parsing主机名

我的设置:

hosts.cfg – 包含正在监视的每个主机的定义,例如:

 define host{ use linux-server host_name rdss-vpn display_name VPN address 54.***.***.176 } 

hosts_groups.cfg – 定义组:

 define hostgroup{ hostgroup_name rdss-service-server alias RDSS services members [...], rdss-vpn } 

services.cfg

 define service{ use local-service hostgroup_name rdss-web-server, rdss-service-server service_description Memory usage check_command check_linux_memory!50!80 notifications_enabled 1 } 

check_linux_memory中的check_linux_memory

 define command{ command_name check_linux_memory command_line $USER1$/check_nrpe -H $HOSTNAME$ -c check_linux_memory -a '-f -w $ARG1$ -c $ARG2$' } 

以下是主机的示例,其中check_linux_memory工作:

 define host{ use linux-server host_name www.dev.domain.com display_name DEV address 54.***.***.136 } 

它是组:

 define hostgroup{ hostgroup_name rdss-web-server alias RDSS web servers members www.dev.domain.com, www.qa.domain.com, www.staging.domain.com } 

问题是几个新添加的主机,如rdss-vpnNagios不会从主机获取它的IP(请注意 – 我在check_linux_memory也有其他几个服务器(也是组中的) – 所有的作品)。

相反 – 我在nagios.log有一个错误:

[1437473407] SERVICE ALERT:rdss-vpn;内存使用情况; WARNING; HARD; 4;(在标准输出上无输出)stderr:无法parsing主机名称rdss-vpn:名称或服务未知

你的问题是,你写你的检查命令使用$HOSTNAME$而不是$HOSTADDRESS$

这恰好适用于其他主机,因为它们是用FQDN命名的(例如www.dev.domain.com)。 它不适用于rdss-vpn因为从Nagios框的angular度来看,这不是一个有效的主机名。

你应该使用地址,而不是主机名,在检查。 这将删除DNS作为Nagios检查的依赖项。 如果您确实需要使用主机名而不是IP,请将主机名作为主机地址。

此外,传统上只是将支票通过check_nrpe作为ARG,如check_nrpe!check_memorycheck_nrpe!check_memory!50 80 。 但最终取决于你。