Чтобы с самого начала избавиться от возможной путаницы, я не хочу определять свои собственные поля в определениях хоста, а вместо этого хочу создать переменную, которую я могу использовать в нескольких определениях хоста для заполнения одного из стандартных полей.
Когда я добавляю виртуальную машину на наш сервер Nagios, я добавляю машины в наш кластер виртуализации как родительские для этой машины, потому что, если какой-либо из этих серверов включен, виртуальная машина должна быть доступна. Это приводит к записи в определении каждой виртуальной машины в форме:
define host{
host_name xxx1
alias xxx1.domain.tld
address xxx.xxx.xxx.xxx
parents dom0_1, dom0_2, dom0_3, dom0_4, dom0_5, dom0_6
...
}
Дело в том, что наш кластер постоянно меняется и расширяется, и неудобно обновлять эту запись на каждой виртуальной машине, я хочу иметь возможность изменить ее только в одном месте, и это изменение повлияет на определения для всех. наши виртуальные машины.
Nagios называет эти «макросы» и определяет их в resource.cfg, который вы найдете в каталоге / etc вашей установки Nagios. Что-то вроде:
$USER5$=dom0_1,dom0_2,dom0_3,dom0_4,dom0_5,dom0_6
Добавленный в resource.cfg должен выполнить эту работу (уже заняты от $ USER1 $ до $ USER4 $); вам, возможно, придется поиграться с обратными косыми чертами и прочим, чтобы избежать всех запятых / пробелов. Затем вы можете определить свои хосты следующим образом:
define host{
host_name xxx1
alias xxx1.domain.tld
address xxx.xxx.xxx.xxx
parents $USER5$
...
}
Согласитесь с использованием шаблонов, но вам потребуется немного другой синтаксис для шаблонов. Шаблон - это определение хоста / службы с добавленным "регистром 0", затем вы наследуете шаблон в фактическом определении хоста с использованием, не забудьте наследовать системный хост по умолчанию в вашем новом шаблоне.
define host {
name host-template1
use generic-host
parents dom0_1,dom0_2
register 0
}
define host {
use host-template1
host_name .....
....
}
Я думаю, вы хотите использовать шаблон:
define template {
parents dom0_1, dom0_2
name cluster_parents_tmpl
}
define host {
use cluster_parents_tmpl
host_name xxx1
alias xxx1.domain.tld
address xxx.xxx.xxx.xxx
...
}