В нашей настройке Nagios мы используем шаблоны и наследование объектов для сервисов и хостов.
#Le Hosts
define host{
use linux-nrpe,linux-dc3,linux-cassandra
host_name tigris
alias tigris
address 192.168.4.72
}
define host{
use linux-nrpe,linux-dc3,linux-cassandra
host_name euphrates
alias euphrates
address 192.168.4.177
}
#Le Templates
define host{
name linux-nrpe
use all-hosts
hostgroups linux-nrpe
contact_groups rhands,usergroup1,opcomms
register 0
}
#Le Services
define service{
hostgroup_name linux-nrpe
use high-priority-service,graphed-service
service_description Load
check_command check_by_nrpe!check_load!5,5,6!9,9,9
contact_groups rhands,usergroup1,opcomms
}
[...etc...]
Проблема с этой настройкой - все серверы в linux-nrpe
групповые триггеры предупреждают, когда их уровни нагрузки достигают того, что определено в службе, но наши рабочие лошадки могут работать 24/7 при нагрузке 20, но наши серверы БД вполне благополучно сидят на ~ 1, если что-то не пойдет не так, поэтому мы обнаруживаем, что система отправляет слишком много предупреждений или необходимость игнорировать / не предупреждать о вещах. Определение отдельных определений сервисов для каждого сервера (многих из них) займет много времени, нам бы очень хотелось сделать что-то вроде
define host{
name linux-nrpe
use all-hosts
hostgroups linux-nrpe
contact_groups rhands,usergroup1,opcomms
register 0
perf_load 2,2,3 5,5,6
perf_mem 95% 97%
[...more...]
}
define service{
hostgroup_name linux-nrpe
use high-priority-service,graphed-service
service_description Load
check_command check_by_nrpe!check_load!$perf_mem$
contact_groups rhands,usergroup1,opcomms
}
Я просмотрел документы и ничего не увидел, если я что-то не упускаю. Любые идеи?
У нас есть очень похожее решение, работающее здесь, в нашем Nagios Monitoring. Пользовательские переменные хоста / службы должны начинаться с подчеркивания в определении, а в ссылке вы должны добавить _HOST или _SERVICE в качестве префикса и все прописные буквы в качестве имени.
Поэтому пользовательские переменные perf_load и perf_mem должны быть определены как
define host {
[..]
_perf_load 2,2,3 5,5,6
_perf_mem 95% 97%
[..]
}
и упоминается как
define service {
[..]
check_command check_by_nrpe!check_load!$_HOSTPERF_LOAD$
[..]
}
Фрагмент текущей конфигурации нашего Nagios:
define host {
host_name target
alias target
address target
use tmpl_host
_gprs_address 192.168.0.1
}
[...]
define service {
host_name target
service_description GPRS ping
use tmpl_service_ping
check_command check_fping-by-ssh!-H 1.2.3.4 -S $_HOSTGPRS_ADDRESS$ -n 7 -t 1000 -w 1000 -c 2000
event_handler check_restart-GPRS-PPP
notes_url https://wiki.
contact_groups admin_allday
}
Вы найдете более подробную информацию в Nagios Документация.
Для справки, в Icinga такая же работа.
Вы также можете определить пороги в конфигурации NRPE на самих хостах. Это непрактично, если у вас более нескольких десятков хостов, если у вас нет какого-либо управления конфигурацией (что-то вроде марионетки или даже просто git / hg / svn / something) и использования 'includes' в nrpe.cfg.
Однако предложение Lairsdragon намного лучше. Единственное, что я хотел бы добавить:
Может быть полезно называть переменные настраиваемых объектов двумя ведущими символами подчеркивания ($ __ FOO), чтобы их можно было называть как «$ _HOST_FOO».