Chapitre 20. Variables personnalisées d'objet

Introduction

Les utilisateurs demandent souvent que de nouvelles variables puissent être ajoutées aux définitions d'hôtes, de services et de contacts. Ceci inclut des variables comme la communauté du protocole SNMP l'adresse MAC, le nom d'utilisateur AIM, le numéro Skype ou une simple adresse. Le problème que je vois à faire ça est que Nagios devient alors moins générique et plus spécifique à un type d'infrasctructure. Nagios a été prévu pour être flexible, ce qui sous-entend que les choses doivent être pensées de façon générique. Par exemple, les définitions d'hôtes dans Nagios ont une variable générique address qui peut contenir n'importe quoi; de la simple adresse IP à l'adresse complète de type FQDN; quoique soit d'approprié à l'utilisateur.

Pourtant, il y a bien un besoin pour les administrateurs d'avoir la possibilité de stocker des informations à propos des composants de leur infrastructure dans la configuration de Nagios sans imposer un ensemble de variables spécifiques pour les autres. Nagios essaie de solutionner ce problème en autorisant les utilisateurs à définir des variables personnalisées dans leurs définitions d'objets. Les variables personnalisées permettent aux utilisateurs de définir des propriétés supplémentaires pour leurs hôtes, services et définitions de contacts et d'utiliser leurs valeurs dans les notifications, les gestionnaires d'événements et les contrôles d'hôtes et de services.

Principes de base des variables personnalisées

Il y a quelques points importants que vous devriez connaître sur les variables personnalisées :

  • Les noms de variables personnalisées doivent commencer par un underscore (_) pour prévenir tout conflit avec les variables standards.

  • Les noms de variables personnalisées sont insensibles à la casse

  • Les variables personnalisées sont héritées des gabarits d'objets comme n'importe quelle variable standard

  • Les scripts peuvent référencer des valeurs de variables personnalisées avec les variables d'environnement et les macros

Exemples

Voici un exemple de la façon dont peuvent être définies les variables personnalisées dans différents types de définitions d'objets

define host {
    host_name     linuxserver
    _mac_address  00:06:5B:A6:AD:AA ; <-- Custom MAC_ADDRESS variable
    _rack_number  R32               ; <-- Custom RACK_NUMBER variable
    ...
}
        
define service {
    host_name       linuxserver
    description     Memory Usage
    _SNMP_community public    ; <-- Custom SNMP_COMMUNITY variable
    _TechContact    Jane Doe  ; <-- Custom TECHCONTACT variable
...
}
        
define contact {
    contact_name   john
    _AIM_username  john16  ; <-- Custom AIM_USERNAME variable
    _YahooID       john32  ; <-- Custom YAHOOID variable
    ...
}
        

Les variables personnalisées comme macro

Les variables personnalisées peuvent être référencées dans des scripts et exécutables que Nagios utilisent pour exécuter les contrôles, notifications, etc… en utilisant les macros ou variables d'environnement.

Pour éviter tous conflits de noms parmi les variables personnalisées de différents types d'objets, Nagios ajoute _HOST, _SERVICE ou _CONTACT au début des variables personnalisées d'hôtes, de services et de contacts des macros et des variables d'environnement. Le tableau ci-dessous montre la correspondance entre les variables personnalisées et leur macro ou variable d'environnement respectives pour les variables personnalisées définies dans l'exemple précédent.

Type d'objet

Nom de la variable

Nom de la macro

Variable d'environnement

Hôte

MAC_ADDRESS

$_HOSTMAC_ADDRESS$

NAGIOS__HOSTMAC_ADDRESS

Hôte

RACK_NUMBER

$_HOSTRACK_NUMBER$

NAGIOS__HOSTRACK_NUMBER

Service

SNMP_COMMUNITY

$_SERVICESNMP_COMMUNITY$

NAGIOS__SERVICESNMP_COMMUNITY

Service

TECHCONTACT

$_SERVICETECHCONTACT$

NAGIOS__SERVICETECHCONTACT

Contact

AIM_USERNAME

$_CONTACTAIM_USERNAME$

NAGIOS__CONTACTAIM_USERNAME

Contact

YAHOOID

$_CONTACTYAHOOID$

NAGIOS__CONTACTYAHOOID

Variables personnalisées et héritage

Les variables personnalisées d'objets peuvent être héritées comme n'importe quelle variable standard d'hôte, de service ou de contact.