1 votes

Définir les variables dans la configuration de Nagios ?

Pour éviter toute confusion dès le départ, je ne cherche pas à définir mes propres champs dans les définitions d'hôte, mais plutôt à créer une variable que je peux utiliser dans plusieurs définitions d'hôte pour remplir l'un des champs standard.

Lorsque j'ajoute une VM à notre serveur Nagios, j'ajoute les machines de notre cluster de virtualisation comme parents de cette machine, car si l'un de ces serveurs est opérationnel, la VM devrait être accessible. Cela se traduit par une entrée dans la définition de chaque VM de la forme :

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

Le problème est que notre cluster ne cesse de changer et de s'étendre, et qu'il est pénible de devoir mettre à jour cette entrée dans chaque VM. Je voudrais pouvoir la modifier à un seul endroit, et que ce changement affecte les définitions de toutes nos VM.

3voto

RainyRat Points 3680

Nagios appelle cela des "macros", et les définit dans resource.cfg, que vous trouverez dans le répertoire /etc de votre installation Nagios. Quelque chose comme :

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

Ajouté à resource.cfg devrait faire l'affaire ($USER1$ à $USER4$ sont déjà pris) ; vous devrez peut-être jouer avec les backslashes et autres pour échapper à toutes les virgules/espaces, cependant. Ensuite, vous pouvez définir vos hôtes comme suit :

define host{
        host_name               xxx1
        alias                   xxx1.domain.tld
        address                 xxx.xxx.xxx.xxx
        parents                 $USER5$
        ...
}

1voto

HampusLi Points 3378

Je suis d'accord pour utiliser des modèles, mais il faut une syntaxe légèrement différente pour les modèles. Un modèle est une définition d'hôte/service à laquelle on ajoute "register 0", puis on hérite du modèle dans la définition d'hôte réelle avec utilisation, n'oubliez pas d'hériter du système default-host dans votre nouveau modèle.

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

 define host {
   use host-template1
   host_name .....
   ....
  }

0voto

Ruslan Points 11

Je pense que vous voulez utiliser un modèle :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X