Lorsque vous supervisez les composants logiciels d’un serveur, vous pouvez parfois avoir besoin d’en savoir plus sur le comportement des mesures que vous supervisez

Envoi d’informations supplémentaires dans les alertes e-mail

Il s’agit de replacer les données dans leur contexte, car ce n’est pas la même chose 25 que 25 % d’une UCT, que 25 % d’une UCT avec trois autres UCT, tous à 100 %, que 25 % d’une UCT d’un ordinateur sur le point de se bloquer en raison d’un excès de transactions d’E/S qui supporte une surcharge depuis des heures, ce qui a mis la température du système au maximum.

« 25 » peut signifier beaucoup de choses, pas vrai ? Allons un peu plus loin

En suivant le cas précédent, supposons que vous voulez mesurer l’utilisation de l’UCT sur l’un des serveurs que vous gérez, et où vous avez défini des seuils qui forcent la notification par email à l’équipe de responsables de l’administration des équipements. 

Ce seuil (CRIT pour CPU > 80) serait reflété dans la configuration du module de la manière suivante :

L’alerte est définie à l’aide du modèle « Critical condition » et on utilise l’action d’envoyer un e-mail personnalisé à une boîte aux lettres spécifique.

Eh bien, jusqu’ici, c’est quelque chose de basique. 

Mais on pourrait souhaiter envoyer des informations supplémentaires sur le problème, quelque chose qu’on doit collecter uniquement lorsqu’on a besoin, des informations en temps réel qui seront utiles pour rechercher une solution automatiquement.

Mais… Pandora FMS peut-il le faire ?

Vous pouvez inclure des informations provenant d’autres modules dans le mail en utilisant les macros d’alerte qui font référence à d’autres modules. 

Vous pouvez consulter la liste complète des macros dans la documentation, mais je vous fais un résumé rapide de quelques macros intéressantes :

moduledata_X_ : Il affiche les données du module « X » du même agent que le module déclencheur de l’alerte. 

De cette façon, si vous avez un module appelé LoadAVG, en appelant la macro _moduledata_LoadAVG_ vous pouvez inverser la valeur de la charge du système. 

De même, pour afficher un graphique des dernières 24 heures de ce module, vous devriez utiliser la macro _modulegraph_LoadAVG_24_ 

*Ce dernier graphique est encore expérimental, jusqu’à la version 772 il ne sera pas disponible pour tout le monde.

Affichage des procédures

Vous voudriez peut-être inclure des informations textuelles sur ce qu’il faut faire si vous mettez votre module dans CRITICAL à titre d’instructions ou de procédure. Pour ce faire, la macro _alert_critical_instructions_ renvoie le texte que vous avez configuré dans ce module pour ce cas.

Affichage des données précédentes

Il se peut que vous souhaitez également afficher les données ci-dessus sur ce moniteur avant de déclencher l’alerte. Pour cela vous pouvez utiliser la macro  _prevdata_

Affichage des champs personnalisés de l’agent

Supposons que vous avez un champ dans l’agent qui collecte les données, qui vous indique le nom du responsable du système et son téléphone, tels que les champs d’agent personnalisés avec ID 7 et ID 9. 

Pour ce faire, vous utiliseriez la macro _agentcustomfield_n_ comme macro _agentcustomfield_7_ et macro _agentcustomfield_9_ afin de pouvoir mettre dans l’e-mail le nom et le numéro de téléphone du responsable du système.

Un exemple complet, en utilisant des macros dans un email

Prenons un exemple. 

Si vous vouliez envoyer un e-mail un peu plus complet, vous modifieriez l’action de courrier que vous utilisez pour ajouter de nouvelles macros :

Utilisation de l’information dynamique

Et si vous vouliez aller plus loin ? 

Et si vous vouliez exécuter une commande chaque fois qu’il se passe quelque chose et collecter la valeur pour l’envoyer dans l’e-mail ? 

De cette façon, vous n’avez pas besoin d’avoir une métrique supplémentaire constante dans votre supervision pour ne pas remplir la base de données avec des informations qui ne vous sont utiles qu’en cas de criticité.

Pour pouvoir effectuer cet envoi d’informations supplémentaires, il sera nécessaire de créer un module préalable dans votre agent logiciel afin qu’il ne collecte les informations que lorsque cela est nécessaire. 

Pour ce faire, introduisez la structure suivante dans votre module :

module_begin 

module_name NOM_DU_MODULE

module_type async_string 

module_precondition > X COMMANDE_A_EXÉCUTER_EN TANT QUE_CONDITION

module_exec COMMANDE_FINAL_A_EXÉCUTER

module_end

  • Le module devra être asynchrone et avec le type de données que vous allez collecter. 

Cela est dû à la nécessité que ce module ne passe pas à l’état inconnu, donnant ainsi un faux sentiment de défaillance, lorsqu’il ne remplit pas la condition préalable du module.

  • Une expression de condition devra être incorporée pour que vous puissiez exécuter le module normalement. 

Pour ce faire, vous devrez effectuer une commande préalable à partir de laquelle vous obtiendrez les informations numériques pour obtenir les données. En suivant l’exemple de l’UCT décrit ci-dessus (supérieur à 80 %), ce serait quelque chose comme :

  • module_precondition > 80 uptime | awk -F “,” ‘{print $3}’ | awk ‘{print $3}’ | tr d “\n”
  • Enfin, vous utiliserez la commande d’obtention de ces informations supplémentaires que vous joindrez dans votre e-mail.

Dans le cas précédent, il serait bon de connaître les processus qui consomment le plus d’UCT (top 5 des processus), de sorte que ce pourrait être un exemple :

  • module_exec top -n1 | head -12

Ainsi, dans l’exemple ci-dessus, il resterait un module comme suit :

module_begin 

module_name TOP5_CPU_Proc_Usage

module_type async_string 

module_precondition > 80 uptime | awk -F “,” ‘{print $3}’ | awk ‘{print $3}’ | tr d “\n”

module_exec top -n1 | head -12

module_end

Une fois que vous avez créé le formulaire qui ne sera exécuté qu’en cas de besoin, vous devez entrer cette information dans votre email.

 Pour cela, il faut utiliser la macro suivante dans le mail :

_moduledata_TOP5_CPU_Proc_Usage_ 

Ce n’est qu’une utilisation de la macro pour envoyer des informations supplémentaires, alors vous pouvez l’utiliser pour d’autres cas tels que, si l’utilisation du disque d’un serveur atteint la limite, vous pouvez afficher les cinq fichiers les plus lourds enregistrés sur le serveur, en utilisant la commande  « du -Sah/sort | -rh | head -5 »

Shares