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

Определить переменные в Nagios Config?

Чтобы с самого начала избавиться от возможной путаницы, я не хочу определять свои собственные поля в определениях хоста, а вместо этого хочу создать переменную, которую я могу использовать в нескольких определениях хоста для заполнения одного из стандартных полей.

Когда я добавляю виртуальную машину на наш сервер 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
    ...
}