В настоящее время я экспериментирую с определением набора служб для всех хостов в группе хостов, это работает нормально.
Моя проблема в том, что затем я хочу иметь возможность переопределить эти определения служб, которые были включены в хост, из группы хостов. Например, для ситуаций, когда для одного конкретного Linux-сервера необходимо повысить порог проверки PING по сравнению с заданным по умолчанию.
Так, например, я хотел бы иметь хост в linux-server
группа хостов, которая наследует несколько сервисов (SSH, Disk, PING и т. д.), но для определенных сервисов я хочу переопределить их собственными уникальными значениями, определить сервис, специфичный для этого хоста, с пользовательскими значениями.
Например. Определите хост в linux-server
с обычай PING
определение услуги:
define host {
use n1-host
host_name server-01
hostgroups linux-server
alias Test Linux Server
parents my-gateway,upstream-gateway
address server01.test.com
}
define service {
use generic-service
host_name server-01
service_description PING
check_command check_ping!100.0,5%!400.0,15%
}
К сожалению, прямо сейчас, хотя имя хоста и описание службы совпадают с данными проверки PING на уровне группы, только одна служба PING указана для server-01
и это проверка PING на уровне группы, а не на уровне хоста.
Кажется, идет регистрация на каком-то уровне как и в моих журналах Nagios, я вижу:
16 июля, 19:12:27 localhost nagios: Предупреждение: обнаружено повторяющееся определение для службы «PING» на хосте «server-01»
Но в конечном итоге не работает, как если бы я проверял «данные производительности» результатов проверки службы, я вижу там, что порог, включенный в данные, является порогом групповой проверки, а не проверки хоста.
Насколько я понимаю, в версии 3.2.0
чтобы позволить сервисам уровня хоста иметь приоритет над сервисами уровня хоста. Я сейчас бегу 3.4.1
, поэтому я думаю, что это должно работать.
Некоторые ссылки, которые заставляют меня думать, что эта функция должна уже быть реализовано:
Кроме того, я проверил свою копию xdata/xodtemplate.c
из исходного кода 3.4.1, и на первый взгляд кажется, что в «списке пропуска» эти проверки уровня хоста имеют приоритет над проверками группы хостов. Хотя, надо признать, мой анализ примитивен.
Я знаю, что можно исключить определенные хосты из группы, но для меня это не сработает, поскольку в группе хостов может быть несколько служб, и я не хочу, чтобы все эти службы были удалены с хоста.
Я также считаю неинтуитивным поддерживать список исключений отдельно от того, где фактически определен сам хост. Например, в одной из приведенных выше ссылок (второй) был дан совет сделать следующее:
В определении службы добавьте строку под "hostgroup_name": "host_name! Zlinux_hostname"
Это исключит хост zlinux из проверки службы.
На мой взгляд, это не идеальное решение, так как в конечном итоге нам придется делать много исключений, и это кажется трудным для поддержания.
Если у кого-то есть какие-либо советы по поводу того, как заставить это работать, я был бы очень признателен!
В настоящее время я определяю свою службу PING на уровне группы следующим образом:
define hostgroup {
hostgroup_name linux-server
name Linux Servers
}
define service {
use generic-service
hostgroup_name linux-server
service_description PING
check_command check_ping!100.0,2%!400.0,10%
}
Я знаю, что это старый пост, но я наткнулся на этот вопрос, когда искал что-то еще. Я не особо разбираюсь в nagios, но мне это нравится.
Любая проверка, которую вы помещаете в группу хостов, будет применяться к любому хосту в этой группе хостов (о которой вы уже знали). Если вы создадите такую же проверку в хосте cfg, тогда он переопределит проверку группы хостов.
Во всяком случае, я делаю это так:
1. Создайте cfg-файл группы хостов с проверками в нем. Вот моя основная проверка места на диске C :.
define service{
use generic-service
hostgroup_name windows-servers
service_description C: Drive Space
notification_period workhours
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
2. Однако один сервер работает с гораздо меньшим объемом свободного места, чем обычно. Итак, в host cfg у меня есть:
define service{
use generic-service
host_name ServerName
service_description C: Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 95 -c 99
notification_period workhours
}
Теперь проверка службы будет предупреждать вас о 80% и 90% для всех хостов в группе хостов, за исключением хоста, на котором вы добавили проверку со значениями изменений в нем.
Такая организация позволяет мне добавлять только настраиваемые службы и проверки служб, которые не являются нормой в определении узла.
Я не уверен, общепринято это или нет, но Эта статья поразил меня, когда дело дошло до настройки файлов конфигурации. Я уже устал редактировать эти огромные текстовые файлы, и это упростило задачу.
В любом случае, я надеюсь, что это поможет.
Вы можете использовать «Макросы пользовательских переменных» (http://nagios.sourceforge.net/docs/3_0/macros.html)
В определении службы ping используйте, например:
check_command check_ping!200.0,20%!$_HOSTVAR_SERVICE_PING_CRITICAL_RTA$,40%
В вашем шаблоне хоста установите значение по умолчанию:
_VAR_SERVICE_PING_CRITICAL_RTA 500
В определении хоста, который должен использовать набор значений разницы, например
_VAR_SERVICE_PING_CRITICAL_RTA 1500
явно.