Nagios:无法解析主机名

Nagios:无法解析主机名

我的设置:

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_memorycommands.cfg

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] 服务警报:rdss-vpn;内存使用情况;警告;困难;4;(标准输出上无输出)stderr:无法解析主机名 rdss-vpn:名称或服务未知

答案1

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

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

您应该在检查中使用地址,而不是主机名。这样可以消除 DNS 作为 Nagios 检查的依赖关系。如果您确实需要使用主机名而不是 IP,请将主机名作为主机地址。

此外,传统上人们会将检查传递给check_nrpeARG,如check_nrpe!check_memorycheck_nrpe!check_memory!50 80。但最终还是取决于你。

相关内容