Nagios® est conçu pour permettre aux plugins de renvoyer des données de performance optionnelles en plus des données d'état habituelles, ainsi que pour permettre de transférer ces données de performance à des applications tierces qui les traiteront. Vous trouverez ci-dessous une description des différents types de données de performance, ainsi que des informations sur la façon de les traiter…
Nagios® peut fournir de base deux catégories de données de performance :
Les données de performance du contrôle sont des données internes liées à l'exécution proprement dite d'un contrôle d'hôte ou de service. Cela inclut entre autres la latence de contrôle de service (c.-à-d. le "retard" par rapport au moment où le contrôle du service était ordonnancé) et le nombre de secondes nécessaires à l'exécution du contrôle d'hôte ou de service. Ce type de données de performance est disponible pour tous les contrôles réalisés. Les macros $HOSTEXECUTIONTIME$ et $SERVICEEXECUTIONTIME$ contiennent le nombre de secondes nécessaires à l'exécution d'un contrôle d'hôte ou de service, et les macros $HOSTLATENCY$ et $SERVICELATENCY$ peuvent servir à déterminer le "retard" qu'a pris le lancement d'un contrôle régulier d'hôte ou de service par rapport au moment où il était ordonnancé.
Les données de performance du plugin sont des données externes propres au plugin utilisé pour réaliser le contrôle d'hôte ou de service. Elles peuvent par exemple comporter le pourcentage de perte de paquets, l'espace disque disponible, la charge du processeur, le nombre d'utilisateurs courant, etc. - à la base tout type de mesure que le plugin réalise lors de son exécution. Les données de performance du plugin sont optionnelles et peuvent ne pas être fournies par tous les plugins. Au moment de la rédaction de ce document, aucun plugin ne retourne de donénes de performance [NdT: ce n'est plus vrai aujourd'hui], mais ils devraient prochainement le faire. Les données de performance du plugin (lorsqu'elle sont disponibles) sont accessibles à travers les macros $HOSTPERFDATA$ et $SERVICEPERFDATA$. Vous trouverez ci-dessous plus d'informations sur la façon dont les plugins peuvent renvoyer à Nagios® des données de performance qui soient exploitables via les macros $HOSTPERFDATA$ et $SERVICEPERFDATA$.
En temps normal les plugins renvoient un seule ligne de texte indiquant l'état d'une quelconque donnée mesurable. Par exemple, le plugin check_ping peut renvoyer une ligne de texte comme suit :
PING ok - Packet loss = 0%, RTA = 0.80 ms
Avec ce type de valeur, toute la ligne de texte est accessible via les macros $HOSTOUTPUT$ ou $SERVICEOUTPUT$ (selon que le plugin a été utilisé pour un contrôle d'hôte ou de service).
Pour simplifier le transfert de données de performance du plugin à Nagios®, la spécification des plugins a été augmentée. Si un plugin souhaite renvoyer des données de performance à Nagios®, il affiche la ligne de texte habituelle, suivie du caractère "pipe" (|), puis une chaîne de caractères contenant une ou plusieurs mesures de performance. Prenons par exemple le plugin check_ping et supposons qu'il ait été modifié pour renvoyer le pourcentage de paquets perdus et le temps moyen de retour [NdT : average round trip time] comme données de performance. La chaîne retournée par le plugin pourrait ressembler à ceci :
PING ok - Packet loss = 0%, RTA = 0.80 ms | percent_packet_loss=0, rta=0.80
Quand Nagios® rencontre ce format de données affichées par un plugin, il éclate le texte en deux parties : tout ce qui précède le caractère "pipe" est considéré comme étant l'affichage "normal" du plugin et tout ce qui suit le caractère "pipe" est considéré comme des données de performance du plugin. L'affichage "normal" est stocké dans les macros $HOSTOUTPUT$ ou $SERVICEOUTPUT$, et les données de performance optionnelles sont stockées dans les macros $HOSTPERFDATA$ ou $SERVICEPERFDATA$. Dans notre exemple, les macros $HOSTOUTPUT$ ou $SERVICEOUTPUT$ contiendraient "PING ok - Packet loss = 0%, RTA = 0.80 ms" (sans les guillemets) et les macros $HOSTPERFDATA$ ou $SERVICEPERFDATA$ contiendraient "percent_packet_loss=0, rta=0.80" (sans les guillemets).
Le démon Nagios® ne traite pas directement les données de performance, si bien qu'il ne préoccupe pas du formatage des données de performance. Il n'y pas de limitations intrinsèques concernant le format ou le contenu des données de performance. Cependant, si vous utilisez un addon externe pour traiter les données de performance (p.ex. PerfParse), l'addon peut attendre un format particulier de la part du plugin. Vérifiez la documentation accompagnant l'addon pour plus d'information. De même, assurez-vous de lire le "Guide du développeur de plugin" sur SourceForge (http://nagiosplug.sourceforge.net/) si vous souhaitez écrire des plugins.
Pour traiter les données de performance mises à disposition par Nagios® et les plugins, vous devez :
Vous pouvez configurer Nagios® pour qu'il écrive toutes les données de performance d'hôte ou de service dans des fichiers grâce aux paramètres host_perfdata_file et service_perfdata_file. Vous pouvez contrôler comment les données sont écrites dans ces fichiers avec les paramètres host_perfdata_file_template et service_perfdata_file_template. De plus, vous pouvez faire en sorte que Nagios® exécute régulièrement des commandes pour traiter les données de performance présentes dans les fichiers grâce aux paramètres host_perfdata_file_processing_command et service_perfdata_file_processing_command.
Vous pouvez configurer Nagios® pour qu'il traite les données de performance d'hôte et de service en exécutant des commandes grâce aux paramètres host_perfdata_command ou service_perfdata_command. Voici un exemple de commande qui écrit simplement les données de performance de service dans un fichier :
define command{ command_name process-service-perfdata command_line /bin/echo -e "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$" >> /usr/local/nagios/var/service-perfdata.dat }