Utilisation des macros dans les commandes

Macros

Une des fonctionalités disponibles dans Nagios® est la possibilité d'utiliser des macros [NdT: macro-commandes] dans les définitions de commandes. Avant d'exécuter une commande, Nagios® remplacera toutes les macros dans celle-ci par les valeurs correspondantes. Cela vous permet de définir quelques commandes génériques que vous manipulerez à votre guise.

Substitution des macros

Avant qu'une commande (contrôles d'hôte et de service, notifications, gestionnaires d'événements, etc.) soit exécutée, Nagios® va remplacer toutes les macros qu'il trouvera dans la définition de la commande par les valeurs correspondantes.

Quand vous utilisez des macros d'hôte et de service dans les définitions de commandes, elles font référence aux valeurs de l'hôte ou du service pour lequel s'exécute la commande. Prenons un exemple. Supposons que nous ayons une définition d'hôte et une commande check_ping définies de la manière suivante :

define host{
        host_name       linuxbox
        address         192.168.1.2
        check_command   check_ping
        …
        }
        
define command{
        command_name    check_ping
        command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60%
        }

La ligne de commande finale, après substitution, qui sera exécutée pour le contrôle de l'hôte ressemblera à ceci :

/usr/local/nagios/libexec/check_ping -H 192.168.1.2 -w 100.0,90% -c 200.0,60%

Vous pouvez aussi passer des paramètres aux commandes, ce qui est pratique si vous voulez avoir des définitions de commandes plus génériques. Les paramètres sont spécifiés dans la définition de l'objet (c.-à-d. de l'hôte ou du service), en les séparant du nom de la commande par des points d'exclamation (!) comme ceci :

define service{
        host_name               linuxbox
        service_description     PING
        …
        check_command           check_ping!200.0,80%!400.0,40%
        …
        }

Dans l'exemple ci-dessus, la commande de contrôle du service a deux paramètres (auxquels on fait référence par les macros $ARGn$). La macro $ARG1$ vaudra "200.0,80%" et $ARG2$ vaudra "400.0,40%" (sans les guillemets). Supposons que nous utilisons la définition d'hôte ci-dessus et une commande check_ping définie comme ceci :

define command{
        command_name    check_ping
        command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
        }

La ligne de commande finale à exécuter pour le contrôle du service sera :

/usr/local/nagios/libexec/check_ping -H 192.168.1.2 -w 200.0,80% -c 400.0,40%

Macros à la demande

Normalement, quand vous utilisez des macros d'hôte ou de service dans les définitions de commandes, elles font référence aux valeurs de l'hôte ou du service pour lequel s'exécute la commande. Par exemple, si la commande de contrôle d'un hôte s'exécute pour l'hôte appelé "linuxbox", toutes les macros d'hôte listées dans le tableau ci-après font référence aux valeurs de cet hôte ("linuxbox").

Si vous souhaitez faire référence aux valeurs d'un autre hôte ou service dans une commande (pour lequel ne s'exécute pas la commande), vous pouvez utiliser ce qu'on appellle des macros "à la demande". Les macros à la demande ressemblent aux macros normales, mis à part qu'elle contiennent l'identifiant de l'hôte ou du service où aller chercher leur valeur. Voici la syntaxe de base pour les macros à la demande :

Notez que le nom de la macro est séparé de l'identifiant de l'hôte ou du service par deux points (:). Pour les macros de service à la demande, l'identifiant du service est composé d'un nom d'hôte et d'une description de service - qui sont séparés par deux point (:) également.

Voici des exemples de macros d'hôte et de service à la demande :

$HOSTDOWNTIME:myhost$
$SERVICESTATEID:novellserver:DS Database$

Nettoyage des macros

Les valeurs de certaines macros sont dépouillées des métacaractères du shell potentiellement dangereux, avant d'être remplacées dans la commande à exécuter. Les caractéres qui seront supprimés dans les macros sont définis par le paramètre illegal_macro_output_chars. Ce nettoyage s'applique aux macros suivantes :

  1. $HOSTOUTPUT$
  2. $HOSTPERFDATA$
  3. $HOSTACKAUTHOR$
  4. $HOSTACKCOMMENT$
  5. $SERVICEOUTPUT$
  6. $SERVICEPERFDATA$
  7. $SERVICEACKAUTHOR$
  8. $SERVICEACKCOMMENT$

Macros et variables d'environnement

A partir de la version 2.0 de Nagios®, la plupart des macros sont disponibles sous forme de variables d'environnement. Cela signifie que les scripts lancés par Nagios® (c.-à-d. les commandes de contrôle de service et d'hôte, les commandes de notification, etc.) peuvent faire référence à ces macros directement en tant que variables d'environnement standard. Pour des raisons de sécurité et de bon sens, $USERn$ et les macros d'hôte et de service à la demande ne sont pas disponibles comme variables d'environnement. Les variables d'environnement qui contiennent des macros sont nommées comme les macros correspondantes (listées ci-dessous), avec le préfixe "NAGIOS_". Par exemple, la macro $HOSTNAME$ est disponible à travers la variable d'environnement nommée "NAGIOS_HOSTNAME".

Validité des macros

Bien que toutes les macros puissent être utilisées dans toutes les commandes que vous définissez, elles ne sont pas toutes "valables" pour une commande en particulier. Par exemple, certaines macros ne sont valables que dans les commandes de notification de service, alors que d'autres ne sont valables que dans les commandes de contrôle d'hôte. Il y a dix types de commandes que Nagios® identifie et traite différemment. Ce sont les suivantes :

  1. Les contrôles de service
  2. Les notifications de service
  3. Les contrôles d'hôte
  4. Les notifications d'hôte
  5. Les gestionnaires d'événements de service et/ou le gestionnaire global d'événements de service
  6. Les gestionnaires d'événements d'hôte et/ou le gestionnaire global d'événements d'hôte
  7. La commande OCSP
  8. La commande OCHP
  9. Les commandes de données de performance de service
  10. Les commandes de données de performance d'hôte

La tableau ci-dessous liste toutes les macros actuellement disponibles dans Nagios®, accompagnées d'une brève description et des types de commandes pour lesquels elles sont valables. Si une macro est utilisée dans une commande où elle n'est pas valable, elle est remplacée par une chaîne vide. Notez que les macros sont entièrement en majuscules et sont comprises entre des caractères $.

Tableau de disponibilité des macros

Légende :

Non la macro n'est pas disponible
Oui La macro est disponible
Nom de la macro Contrôles de service Notifications de service Contrôles d'hôte Notifications d'hôte Gestionnaires d'événements de service, Gestionnaire global d'événements de service, commandes OCSP Gestionnaires d'événements d'hôte, Gestionnaire global d'événements d'hôte, commandes OCHP Commandes de données de performance de service Commandes de données de performance d'hôte
Macros d'hôte : 3
$HOSTNAME$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTALIAS$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTADDRESS$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTSTATE$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTSTATEID$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTSTATETYPE$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTATTEMPT$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTLATENCY$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTEXECUTIONTIME$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTDURATION$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTDURATIONSEC$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTDOWNTIME$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTPERCENTCHANGE$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTGROUPNAME$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTGROUPALIAS$ Oui Oui Oui Oui Oui Oui Oui Oui
$LASTHOSTCHECK$ Oui Oui Oui Oui Oui Oui Oui Oui
$LASTHOSTSTATECHANGE$ Oui Oui Oui Oui Oui Oui Oui Oui
$LASTHOSTUP$ Oui Oui Oui Oui Oui Oui Oui Oui
$LASTHOSTDOWN$ Oui Oui Oui Oui Oui Oui Oui Oui
$LASTHOSTUNREACHABLE$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTOUTPUT$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTPERFDATA$ Oui Oui Oui 1 Oui Oui Oui Oui Oui
$HOSTCHECKCOMMAND$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTACKAUTHOR$ Non Non Non Oui Non Non Non Non
$HOSTACKCOMMENT$ Non Non Non Oui Non Non Non Non
$HOSTACTIONURL$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTNOTESURL$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTNOTES$ Oui Oui Oui Oui Oui Oui Oui Oui
Macros de service :
$SERVICEDESC$ Oui Oui Non Non Oui Non Oui Non
$SERVICESTATE$ Oui 2 Oui Non Non Oui Non Oui Non
$SERVICESTATEID$ Oui 2 Oui Non Non Oui Non Oui Non
$SERVICESTATETYPE$ Oui Oui Non Non Oui Non Oui Non
$SERVICEATTEMPT$ Oui Oui Non Non Oui Non Oui Non
$SERVICELATENCY$ Oui Oui Non Non Oui Non Oui Non
$SERVICEEXECUTIONTIME$ Oui 2 Oui Non Non Oui Non Oui Non
$SERVICEDURATION$ Oui Oui Non Non Oui Non Oui Non
$SERVICEDURATIONSEC$ Oui Oui Non Non Oui Non Oui Non
$SERVICEDOWNTIME$ Oui Oui Non Non Oui Non Oui Non
$SERVICEPERCENTCHANGE$ Oui Oui Non Non Oui Non Oui Non
$SERVICEGROUPNAME$ Oui Oui Non Non Oui Non Oui Non
$SERVICEGROUPALIAS$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICECHECK$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICESTATECHANGE$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICEOK$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICEWARNING$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICEUNKNOWN$ Oui Oui Non Non Oui Non Oui Non
$LASTSERVICECRITICAL$ Oui Oui Non Non Oui Non Oui Non
$SERVICEOUTPUT$ Oui 2 Oui Non Non Oui Non Oui Non
$SERVICEPERFDATA$ Oui 2 Oui Non Non Oui Non Oui Non
$SERVICECHECKCOMMAND$ Oui Oui Non Non Oui Non Oui Non
$SERVICEACKAUTHOR$ Non Oui Non Non Non Non Non Non
$SERVICEACKCOMMENT$ Non Oui Non Non Non Non Non Non
$SERVICEACTIONURL$ Oui Oui Non Non Oui Non Oui Non
$SERVICENOTESURL$ Oui Oui Non Non Oui Non Oui Non
$SERVICENOTES$ Oui Oui Non Non Oui Non Oui Non
Macros récapitulatives :
$TOTALHOSTSUP$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTSDOWN$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTSUNREACHABLE$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTSDOWNUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTSUNREACHABLEUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTPROBLEMS$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALHOSTPROBLEMSUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESOK$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESWARNING$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESCRITICAL$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESUNKNOWN$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESWARNINGUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESCRITICALUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICESUNKNOWNUNHANDLED$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICEPROBLEMS$ Oui Oui 4 Oui Oui 4 Oui Oui Oui Oui
$TOTALSERVICEPROBLEMSUNHANDLED$ Oui Oui4 Oui Oui4 Oui Oui Oui Oui
Macros de notification :
$NOTIFICATIONTYPE$ Non Oui Non Oui Non Non Non Non
$NOTIFICATIONNUMBER$ Non Oui Non Oui Non Non Non Non
Macros de contact :
$CONTACTNAME$ Non Oui Non Oui Non Non Non Non
$CONTACTALIAS$ Non Oui Non Oui Non Non Non Non
$CONTACTEMAIL$ Non Oui Non Oui Non Non Non Non
$CONTACTPAGER$ Non Oui Non Oui Non Non Non Non
$CONTACTADDRESSn$ Non Oui Non Oui Non Non Non Non
Macros de date :
$LONGDATETIME$ Oui Oui Oui Oui Oui Oui Oui Oui
$SHORTDATETIME$ Oui Oui Oui Oui Oui Oui Oui Oui
$DATE$ Oui Oui Oui Oui Oui Oui Oui Oui
$TIME$ Oui Oui Oui Oui Oui Oui Oui Oui
$TIMET$ Oui Oui Oui Oui Oui Oui Oui Oui
Macros de fichier :
$MAINCONFIGFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$STATUSDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$COMMENTDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$DOWNTIMEDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$RETENTIONDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$OBJECTCACHEFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$TEMPFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$LOGFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$RESOURCEFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$COMMANDFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$HOSTPERFDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
$SERVICEPERFDATAFILE$ Oui Oui Oui Oui Oui Oui Oui Oui
Macros diverses :
$PROCESSSTARTTIME$ Oui Oui Oui Oui Oui Oui Oui Oui
$ADMINEMAIL$ Oui Oui Oui Oui Oui Oui Oui Oui
$ADMINPAGER$ Oui Oui Oui Oui Oui Oui Oui Oui
$ARGn$ Oui Oui Oui Oui Oui Oui Oui Oui
$USERn$ Oui Oui Oui Oui Oui Oui Oui Oui

Description des macros

Macros d'hôte : 3
$HOSTNAME$ Nom court de l'hôte (par exemple "biglinuxbox"). Cette valeur provient du paramètre host_name de la définition de l'hôte.
$HOSTALIAS$ Nom long/description de l'hôte. Cette valeur provient du paramètre alias de la définition de l'hôte.
$HOSTADDRESS$ Adresse de l'hôte. Cette valeur provient du paramètre address de la définition de l'hôte.
$HOSTSTATE$ Une chaîne représentant l'état actuel de l'hôte ("UP", "DOWN", ou "UNREACHABLE").
$HOSTSTATEID$ Un nombre correspondant à l'état actuel de l'hôte : 0=UP, 1=DOWN, 2=UNREACHABLE.
$HOSTSTATETYPE$ Une chaîne indiquant le type d'état actuel du contrôle d'hôte ("HARD" ou "SOFT"). L'état est SOFT lorsque le contrôle a renvoyé un état non-OK (non-UP) et va être réessayé. L'état est HARD lorsque le contrôle d'hôte a été tenté le nombre de fois maximum défini.
$HOSTATTEMPT$ Le nombre d'essais de contrôle d'hôte actuel. Par exemple, si c'est la seconde fois que l'hôte est contrôlé, ce sera le nombre 2. Le nombre actuel d'essai n'est réellement utile que pour l'écriture de gestionnaires d'événements d'hôte pour des états "SOFT", qui agiraient de manière spécifique selon le nombre de tentatives.
$HOSTLATENCY$ Un nombre (réel) indiquant le retard en secondes par rapport au moment où un contrôle d'hôte ordonnancé devait être exécuté. Par exemple, si un contrôle était ordonnancé à 03:14:15 et qu'il n'a été exécuté qu'à 03:14:17, la latence de ce contrôle est de 2.0 secondes. Les contrôles d'hôtes à la demande ont une latence de zéro secondes.
$HOSTEXECUTIONTIME$ un nombre (réel) indiquant le nombre de secondes qu'a pris l'exécution du contrôle d'hôte (c.-à-d. le temps pendant lequel le contrôle s'est exécuté).
$HOSTDURATION$ Une chaîne indiquant le temps qu'a passé l'hôte dans sont état actuel. Le format est "XXh YYm ZZs", pour les heures, les minutes et les secondes.
$HOSTDURATIONSEC$ Un nombre indiquant le nombre de secondes qu'a passé l'hôte dans sont état actuel.
$HOSTDOWNTIME$ Un nombre indiquant la "profondeur d'arrêt planifié" pour l'hôte. Si cet hôte est actuellement dans une période d'arrêt planifié, la valeur sera supérieure à zéro. Si l'hôte n'est pas en cours d'arrêt planifié, la valeur sera zéro.
$HOSTPERCENTCHANGE$ Un nombre (réel) indiquant le pourcentage de changement d'état subit par l'hôte. Le pourcentage de changement d'état est utilisé par l'algorithme de détection d'oscillation.
$HOSTGROUPNAME$ le nom court du groupe d'hôtes auquel appartient cet hôte. Cette valeur provient du paramètre hostgroup_name de la définition de groupe d'hôtes. Si l'hôte fait partie de plus d'un groupe d'hôte cette macro contiendra le nom d'un seul de ceux-ci.
$HOSTGROUPALIAS$ Le nom long/alias du groupe d'hôtes auquel appartient cet hôte. Cette valeur provient du paramètre alias de la définition de groupe d'hôtes. Si l'hôte fait partie de plus d'un groupe d'hôte cette macro contiendra l'alias d'un seul de ceux-ci.
$LASTHOSTCHECK$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le dernier contrôle d'hôte a eu lieu.
$LASTHOSTSTATECHANGE$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où l'état de l'hôte a changé pour la dernière fois.
$LASTHOSTUP$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où l'hôte a été vu dans l'état UP pour la dernière fois.
$LASTHOSTDOWN$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où l'hôte a été vu dans l'état DOWN pour la dernière fois.
$LASTHOSTUNREACHABLE$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où l'hôte a été vu dans l'état UNREACHABLE pour la dernière fois.
$HOSTOUTPUT$ Le texte en sortie du dernier contrôle d'hôte (p. ex. "Ping OK").
$HOSTPERFDATA$ Cette macro contient les données de performance qui ont éventuellement été renvoyées par le dernier contrôle d'hôte.
$HOSTCHECKCOMMAND$ Cette macro contient le nom de la commande (ainsi que les paramètres qui ont pu lui être passés) utilisée lors du contrôle d'hôte.
$HOSTACKAUTHOR$ Une chaîne contenant le nom de l'utilisateur qui a acquitté le problème de l'hôte. Cette macro n'est valable que dans les notifications dont la macro $NOTIFICATIONTYPE$ vaut "ACKNOWLEDGEMENT".
$HOSTACKCOMMENT$ Une chaîne contenant le commentaire associé à l'acquittement saisi par l'utilisateur qui a acquitté le problème de l'hôte. Cette macro n'est valable que dans les notifications dont la macro $NOTIFICATIONTYPE$ vaut "ACKNOWLEDGEMENT".
$HOSTACTIONURL$ URL d'action associée à l'hôte. Cette valeur provient du paramètre action_url de la définition d'informations complémentaires de l'hôte.
$HOSTNOTESURL$ URL de notes associée à l'hôte. Cette valeur provient du paramètre notes_url de la définition d'informations complémentaires de l'hôte.
$HOSTNOTES$ Notes associées à l'hôte. Cette valeur provient du paramètre notes de la définition d'informations complémentaires de l'hôte.
Macros de service :
$SERVICEDESC$ Le nom long/description du service (p. ex. "Main Website"). Cette valeur provient du paramètre description de la défintion du service.
$SERVICESTATE$ Une chaîne indiquant l'état actuel du service ("OK", "WARNING", "UNKNOWN", ou "CRITICAL").
$SERVICESTATEID$ Un nombre qui correspond à l'état actuel du service : 0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN.
$SERVICESTATETYPE$ Une chaîne indiquant le type d'état actuel du contrôle de service ("HARD" ou "SOFT"). L'état est SOFT quand le contrôle de service renvoie un état non-OK state et va être réessayé. L'état est HARD quand le contrôle de service a été tenté le nombre de fois maximum défini.
$SERVICEATTEMPT$ Le nombre actuel d'essais de contrôle du service. Par exemple, si c'est la seconde fois que le service est contrôlé, ce sera le nombre deux. Le nombre actuel d'essai n'est réellement utile que pour l'écriture de gestionnaires d'événements d'hôte pour des états "SOFT", qui agiraient de manière spécifique selon le nombre de tentatives.
$SERVICELATENCY$ Un nombre (réel) indiquant le retard en secondes par rapport au moment où un contrôle de service ordonnancé devait être exécuté. Par exemple, si un contrôle était ordonnancé à 03:14:15 et qu'il n'a été exécuté qu'à 03:14:17, la latence de ce contrôle est de 2.0 secondes.
$SERVICEEXECUTIONTIME$ un nombre (réel) indiquant le nombre de secondes qu'a pris l'exécution du contrôle de service (c.-à-d. le temps pendant lequel le contrôle s'est exécuté).
$SERVICEDURATION$ Une chaîne indiquant le temps qu'a passé le service dans sont état actuel. Le format est "XXh YYm ZZs", pour les heures, les minutes et les secondes.
$SERVICEDURATIONSEC$ Un nombre indiquant le nombre de secondes qu'a passé le service dans sont état actuel.
$SERVICEDOWNTIME$ Un nombre indiquant la "profondeur d'arrêt planifié" pour le service. Si ce service est actuellement dans une période d'arrêt planifié, la valeur sera supérieure à zéro. Si le service n'est pas en cours d'arrêt planifié, la valeur sera zéro.
$SERVICEPERCENTCHANGE$ Un nombre (réel) indiquant le pourcentage de changement d'état subit par le service. Le pourcentage de changement d'état est utilisé par l'algorithme de détection d'oscillation.
$SERVICEGROUPNAME$ Le nom court du groupe de services auquel appartient cet service. Cette valeur provient du paramètre servicegroup_name de la définition de groupe de services. Si le service fait partie de plus d'un groupe de service cette macro contiendra le nom d'un seul de ceux-ci.
$SERVICEGROUPALIAS$ Le nom long/alias du groupe de services auquel appartient ce service. Cette valeur provient du paramètre alias de la définition de groupe de services. Si le service fait partie de plus d'un groupe de service cette macro contiendra l'alias d'un seul de ceux-ci.
$LASTSERVICECHECK$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le dernier contrôle de service a eu lieu.
$LASTSERVICESTATECHANGE$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où l'état du service a changé pour la dernière fois.
$LASTSERVICEOK$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le service a été vu dans l'état OK pour la dernière fois.
$LASTSERVICEWARNING$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le service a été vu dans l'état WARNING pour la dernière fois.
$LASTSERVICEUNKNOWN$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le service a été vu dans l'état UNKNOWN pour la dernière fois.
$LASTSERVICECRITICAL$ C'est le moment au format time_t (secondes écoulées depuis l'époque UNIX) où le service a été vu dans l'état CRITICAL pour la dernière fois.
$SERVICEOUTPUT$ Le texte en sortie du dernier contrôle de service (p. ex. "Ping OK").
$SERVICEPERFDATA$ Cette macro contient les données de performance qui ont pu être renvoyées par le dernier contrôle de service.
$SERVICECHECKCOMMAND$ Cette macro contient le nom de la commande (ainsi que les paramètres qui ont pu lui être passés) utilisée lors du contrôle de service.
$SERVICEACKAUTHOR$ Une chaîne contenant le nom de l'utilisateur qui a acquitté le problème du service. Cette macro n'est valable que dans les notifications dont la macro $NOTIFICATIONTYPE$ vaut "ACKNOWLEDGEMENT".
$SERVICEACKCOMMENT$ Une chaîne contenant le commentaire associé à l'acquittement saisi par l'utilisateur qui a acquitté le problème du service. Cette macro n'est valable que dans les notifications dont la macro $NOTIFICATIONTYPE$ vaut "ACKNOWLEDGEMENT".
$SERVICEACTIONURL$ URL d'action associée au service. Cette valeur provient du paramètre action_url de la définition d'informations complémentaires du service.
$SERVICENOTESURL$ URL de notes associée au service. Cette valeur provient du paramètre notes_url de la définition d'informations complémentaires du service.
$SERVICENOTES$ Notes associées au service. Cette valeur provient du paramètre notes de la définition d'informations complémentaires du service.
Macros de notification :
$NOTIFICATIONTYPE$ Une chaîne représentant le type de notification envoyée ("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT", "FLAPPINGSTART" ou "FLAPPINGSTOP").
$NOTIFICATIONNUMBER$ Le nombre actuel de notifications émises pour le service ou l'hôte. Le nombre de notifications augmente de un (1) à chaque nouvelle notification envoyée pour l'hôte ou le service (exception faite des acquittements). Le nombre de notifications est remis à zéro quand l'hôte ou le service revient à la normale (après que la notification de retour à la normal ait été envoyée). Les acquittements n'incrémentent pas le nombre de notifications.
Macros récapitulatives :
$TOTALHOSTSUP$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état UP.
$TOTALHOSTSDOWN$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état DOWN.
$TOTALHOSTSUNREACHABLE$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état UNREACHABLE.
$TOTALHOSTSDOWNUNHANDLED$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état DOWN et qui ne sont pas en cours de traitement. Un problème d'hôte est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALHOSTSUNREACHABLEUNHANDLED$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état UNREACHABLE et qui ne sont pas en cours de traitement. Un problème d'hôte est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALHOSTPROBLEMS$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état DOWN ou UNREACHABLE.
$TOTALHOSTPROBLEMSUNHANDLED$ Cette macro donne le nombre total d'hôtes qui sont actuellement dans l'état DOWN ou UNREACHABLE et qui ne sont pas en cours de traitement. Un problème d'hôte est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALSERVICESOK$ Cette macro donne le nombre total de services qui sont actuellement dans l'état OK.
$TOTALSERVICESWARNING$ Cette macro donne le nombre total de services qui sont actuellement dans l'état WARNING.
$TOTALSERVICESCRITICAL$ Cette macro donne le nombre total de services qui sont actuellement dans l'état CRITICAL.
$TOTALSERVICESUNKNOWN$ Cette macro donne le nombre total de services qui sont actuellement dans l'état UNKNOWN.
$TOTALSERVICESWARNINGUNHANDLED$ Cette macro donne le nombre total de services qui sont actuellement dans l'état WARNING et qui ne sont pas en cours de traitement. Un problème de service est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALSERVICESCRITICALUNHANDLED$ Cette macro donne le nombre total de services qui sont actuellement dans l'état CRITICAL et qui ne sont pas en cours de traitement. Un problème de service est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALSERVICESUNKNOWNUNHANDLED$ Cette macro donne le nombre total de services qui sont actuellement dans l'état UNKNOWN et qui ne sont pas en cours de traitement. Un problème de service est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
$TOTALSERVICEPROBLEMS$ Cette macro donne le nombre total de services qui sont actuellement dans l'état WARNING, CRITICAL, ou UNKNOWN.
$TOTALSERVICEPROBLEMSUNHANDLED$ Cette macro donne le nombre total de services qui sont actuellement dans l'état WARNING, CRITICAL, ou UNKNOWN et qui ne sont pas en cours de traitement. Un problème de service est dit non traité s'il n'est pas acquitté, ni en cours d'arrêt planifié, et dont les contrôles sont activés.
Macros de contact :
$CONTACTNAME$ Nom court du contact (p. ex. "jdoe") qui est notifié pour un problème d'hôte ou de service. Cette valeur provient du paramètre contact_name de la définition de contact.
$CONTACTALIAS$ Nom long/description du contact (p. ex. "John Doe") qui est notifié. Cette valeur provient du paramètre alias de la définition de contact.
$CONTACTEMAIL$ Adresse email du contact qui est notifié. Cette valeur provient du paramètre email de la définition de contact.
$CONTACTPAGER$ Numéro/adresse du Pager du contact qui est notifié. Cette valeur provient du paramètre pager de la définition de contact.
$CONTACTADDRESSn$ Adresse du contact qui est notifié. Chaque contact peut avoir six adresses différentes (en plus de son adresse email et de son numéro de pager). Les macros correspondant à ces adresses sont $CONTACTADDRESS1$ - $CONTACTADDRESS6$. Cette valeur provient du paramètre addressx de la définition de contact.
Macros de date :
$LONGDATETIME$ Date et heure actuelles (p. ex. Fri Oct 13 00:30:28 CDT 2000). Le format de la date est défini par le paramètre date_format.
$SHORTDATETIME$ Date et heure actuelles (p. ex. 10-13-2000 00:30:28). Le format de la date est défini par le paramètre date_format.
$DATE$ Date du jour (p. ex. 10-13-2000). Le format de la date est défini par le paramètre date_format.
$TIME$ Heure actuelle (p. ex. 00:30:28).
$TIMET$ Moment actuel au format time_t (secondes écoulées depuis l'époque UNIX).
Macros de fichier :
$MAINCONFIGFILE$ Emplacement du fichier de configuration principal.
$STATUSDATAFILE$ Emplacement du journal des états.
$COMMENTDATAFILE$ Emplacement du fichier de commentaire.
$DOWNTIMEDATAFILE$ Emplacement du fichier des arrêts planifiés.
$RETENTIONDATAFILE$ Emplacement du fichier de mémorisation des états.
$OBJECTCACHEFILE$ Emplacement du fichier de cache des objets.
$TEMPFILE$ Emplacement du fichier temporaire.
$LOGFILE$ Emplacement du fichier journal.
$RESOURCEFILE$ Emplacement du fichier de ressources.
$COMMANDFILE$ Emplacement du fichier de commandes externes.
$HOSTPERFDATAFILE$ Emplacement du fichier de performance des hôtes (s'il est défini).
$SERVICEPERFDATAFILE$ Emplacement du fichier de performance des services (s'il est défini).
Macros diverses :
$PROCESSSTARTTIME$ Moment au format time_t (secondes écoulées depuis l'époque UNIX) où le processus Nagios® a été (re)démarré pour la dernière fois. Vous pouvez en déduire le nombre de secondes écoulées depuis le démarrage (ou redémarrage) de Nagios®, en soustrayant $PROCESSSTARTTIME$ de $TIMET$.
$ADMINEMAIL$ Adresse email globale de l'administrateur. Cette valeur provient du paramètre admin_email.
$ADMINPAGER$ Numéro/adresse global du pager de l'administrateur. Cette valeur provient du paramètre admin_pager.
$ARGn$ Le nième paramètre passé à la commande (notification, gestionnaire d'événement, contrôle de service, etc.). Nagios® gère jusqu'à 32 macros de paramètre (de $ARG1$ à $ARG32$).
$USERn$ La nième macro définie par l'utilisateur. Les macros utilisateur peuvent être définies dans un ou plusieurs fichiers de ressources. Nagios® gère jusqu'à 32 macros utilisateur (de $USER1$ à $USER32$).

Notes

1 Ces macros ne sont pas valables pour l'hôte auquel elles sont associées lorsque cet hôte est en cours de contrôle (c.-à-d. qu'elles n'ont pas de sens, car elles ne sont pas encore déterminées).

2 Ces macros ne sont pas valables pour le service auquel elles sont associées lorsque ce service est en cours de contrôle (c.-à-d. qu'elles n'ont pas de sens, car elles ne sont pas encore déterminées).

3 Quand des macros d'hôte sont utilisées dans des commandes relatives à un service (c.-à-d. les notifications de service, les gestionnaires d'événements, etc.) elles font référence à l'hôte auquel est associé le service.

4 Quand les macros récapitulatives d'hôte et de service sont utilisées dans des commandes de notification, les totaux sont filtrés pour ne prendre en compte que les hôtes et les services autorisés à ce contact (c.-à-d. les hôtes et les services configurés pour lui envoyer des notifications).