我的设置:
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-vpn – Nagios不会从主机获取它的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_memory或check_nrpe!check_memory!50 80 。 但最终取决于你。