Назад | Перейти на главную страницу

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_memory в commands.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; использование памяти; ПРЕДУПРЕЖДЕНИЕ; HARD; 4; (Нет вывода на стандартный вывод) stderr: не удалось разрешить имя хоста rdss-vpn: имя или служба неизвестны

Ваша проблема в том, что вы написали свою команду проверки для использования $HOSTNAME$ вместо того $HOSTADDRESS$.

Это работает для других ваших хостов, потому что они названы с помощью полных доменных имен (например, www.dev.domain.com). Это не работает для rdss-vpn потому что это недопустимое имя хоста с точки зрения вашего Nagios.

В проверках следует использовать адрес, а не имя хоста. Это удаляет DNS как зависимость для проверок Nagios. Если вам действительно нужно использовать имя хоста вместо IP, введите имя хоста в качестве адреса хоста.

Кроме того, традиционно можно было просто передать проверку check_nrpe как ARG, например check_nrpe!check_memory или check_nrpe!check_memory!50 80. Но в конечном итоге решать вам.