====== Perf2Store ====== ===== Introduction ===== "Perf2Store" est un plugin Nagios permettant de rediriger les données de métrologie collectées vers StoreMe, le service de stockage de métrologie du projet Vigilo. La plupart des plugins Nagios peuvent renvoyer des données de métrologie en utilisant la syntaxe perfdata : à la fin de la chaîne de caractères retournée à Nagios, le plugin insère un pipe ("|") puis les différents couples "nom=valeur" collectés. Par exemple le plugin HTTP renvoie le temps de réponse et la taille de la page web demandée. Nagios peut ensuite rediriger ces données de performance vers un gestionnaire. Le plugin Perf2Store joue le rôle de ce gestionnaire, et transfère les données vers une instance de StoreMe par le réseau, en utilisant le protocole StoreMe. Ce protocole est très simple. Il s'agit de paquets UDP contenant du texte brut formaté de la façon suivante : '';;''. Perf2Store est écrit en Perl pour s'exécuter dans l'interpréteur embarqué de Nagios et consommer ainsi moins de ressources. Les dépendances de l'application sont donc : * perl * nagios Perf2Store utilise des fichiers de configuration pour faire correspondre les noms des indicateurs retournés par les plugins Nagios aux noms des indicateurs désirés dans la métrologie de StoreMe (fichiers RRDs). Ces fichiers de configuration sont en Perl, et doivent donc en respecter la syntaxe. Ils doivent tous être placés dans un dossier qui sera passé en paramètre au plugin, il doit y avoir un fichier par hôte supervisé, et le nom de ce fichier doit être composé du préfixe "perf-", puis du nom de l'hôte, puis du suffixe ".pm". La syntaxe précise est détaillée dans le fichier d'exemple perf2store.conf.pm.dist. ===== Installation ===== * Placer le fichier perf2store dans le répertoire des plugins de Nagios (généralement ''/usr/lib/nagios/plugins'') * Le rendre exécutable * Activer le plugin dans Nagios en suivant les instructions de la section ci-dessous * Écrire les fichiers de configuration pour chaque hôte supervisé * Redémarrer Nagios ===== Configuration ===== La configuration de Perf2Store se fait à deux endroits : * l'activation dans Nagios (configuration des arguments passés au plugin) * la correspondance entre les indicateurs Nagios et les indicateurs StoreMe ==== Activation dans Nagios ==== L'activation du gestionnaire de données de performances dans Nagios se fait en 3 étapes : * définition de la commande à lancer pour appeler le plugin. Cette définition se fait généralement dans le fichier des commandes de Nagios, et peut prendre cette forme : define command{ command_name process-service-perfdata command_line /usr/lib/nagios/plugins/perf2store -p /etc/vigilo-perf2store/ -H '$HOSTNAME$' -s '$SERVICEDESC$' -a '$SERVICESTATE$' -t '$LASTSERVICECHECK$' -v '$SERVICEPERFDATA$' } define command{ command_name process-host-perfdata command_line /usr/lib/nagios/plugins/perf2store -p /etc/vigilo-perf2store/ -H '$HOSTNAME$' -s 'HOST' -a '$HOSTSTATE$' -t '$LASTHOSTCHECK$' -v '$HOSTPERFDATA$' } * activation de la gestion des données de performances dans Nagios, et utilisation de la commande définie ci-dessus. Cette configuration se fait généralement dans le fichier "nagios.conf" : process_performance_data=1 host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata ===== Configuration des indicateurs ===== Comme décrit précédemment, la correspondance entre les indicateurs Nagios et StoreMe se fait dans un dossier, contenant un fichier par hôte supervisé, et dont le nom est composé du préfixe "perf-", du nome de l'hôte, et du suffixe ".pm". Ces fichiers sont en Perl, et doivent donc en respecter la syntaxe. Un exemple de format est présenté dans le fichier "perf2store.conf.pm.dist". Un fichier d'hôte définit une tableau associatif contenant trois entrées : * une entrée "IPAddress" : l'adresse du serveur StoreMe où envoyer les données * une entrée "port" : le port UDP sur lequel écoute StoreMe * une entrée map : le tableau associatif des correspondances entre les noms d'indicateurs. Ce tableau a pour clé le nom de l'indicateur dans StoreMe, et pour valeur un autre tableau associatif à deux entrées: * var : le nom de l'indicateur dans Nagios * ds : le nom de l'indicateur à envoyer à StoreMe. Ce nom peut contenir un "/", auquel cas un sous-dossier sera créé. Dans l'architecture proposée dans la docuementation de StoreMe, la valeur est donc ''/'' (voir le README.fr de StoreMe pour la raison de cet encodage).