Моя установка:
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
. Но в конечном итоге решать вам.