Definir variáveis no Nagios Config?

1

Para eliminar algumas possíveis confusões desde o início, não estou tentando definir meus próprios campos nas definições de host, mas sim criar uma variável que possa ser usada em várias definições de host para preencher um dos campos padrão.

Quando adiciono uma VM ao nosso servidor Nagios, adiciono as máquinas em nosso cluster de virtualização como os pais dessa máquina, porque, se qualquer um desses servidores estiver ativo, a VM deverá estar acessível. Isso resulta em uma entrada na definição de cada VM do formulário:

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
        ...
}

O problema é que nosso cluster continua mudando e se expandindo, e é uma dor na parte de trás ter que atualizar essa entrada em cada VM, eu quero poder mudá-la em apenas um lugar, e fazer com que essa mudança afete o definições para todas as nossas VMs.

    
por Bart B 22.09.2011 / 16:20

3 respostas

1

Concorde em usar modelos, mas você precisa de uma sintaxe diferente para modelar. Um template é uma definição de host / serviço com "register 0" adicionado, então você herda o template na definição real do host com o uso, não se esqueça de herdar o host padrão do sistema em seu novo template

define host {
  name host-template1
  use generic-host
  parents dom0_1,dom0_2
  register 0
 }

 define host {
   use host-template1
   host_name .....
   ....
  }
    
por 22.09.2011 / 16:52
3

O Nagios chama essas "macros" e as define no resource.cfg, que você encontrará no diretório / etc da sua instalação do Nagios. Algo como:

 $USER5$=dom0_1,dom0_2,dom0_3,dom0_4,dom0_5,dom0_6

Adicionado ao resource.cfg deve fazer o trabalho ($ USER1 $ a $ USER4 $ já foram feitos); você pode ter que jogar com barras invertidas e outras coisas para escapar de todas as vírgulas / espaços. Então você pode definir seus anfitriões como:

define host{
        host_name               xxx1
        alias                   xxx1.domain.tld
        address                 xxx.xxx.xxx.xxx
        parents                 $USER5$
        ...
}
    
por 22.09.2011 / 16:37
0

Acho que você quer usar um modelo:

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
    ...
}
    
por 22.09.2011 / 16:34

Tags