Envoyez vos notifications Centreon dans vos Salons Microsoft Teams, en toute simplicité

Teams s’est imposé depuis plusieurs mois comme une des plateformes collaboratives de référence pour développer des services de visioconférences, messageries instantanées et de nombreuses autres fonctionnalités qui facilitent le travail au quotidien des ITOps (et des autres aussi mais ils nous intéressent moins pour ce sujet…). En particulier, il est possible au sein de Microsoft Teams© de mettre en place des espaces de travail ou Salons. Sont mis à la disposition des membres de la “Team” des contenus et des outils pour faciliter le travail collaboratif avec des fils de discussions un peu sur le modèle de Slack, plus connus des ITOps peut-être.  La messagerie instantanée et ses salons sont les fonctionnalités dont nous allons tirer parti pour recevoir et afficher les alertes déclenchées au sein de Centreon. 

Qu’est ce qu’un Plugin de notifications ?

Un Plugin de notification permet de tirer parti des fonctionnalités existantes de Centreon (Contact, Règles de notifications, etc.) pour interfacer votre plateforme de supervision avec un outil ou un moyen de communication spécifique et lui permettre d ‘afficher les notifications émises par Centreon sur un canal dédié . 

De nombreuses possibilités existent déjà, comme la notification via SMS au travers du service d’OVH, Slack ou encore Telegram. Le Plugin de notification Teams vous offre la possibilité d’envoyer vos notifications Centreon dans vos salons et nous allons voir comment nous y prendre.

Comment fonctionnent les notifications de Centreon dans Microsoft Teams ?

Tout comme les notifications « classiques » par mail implémentées nativement dans Centreon, le Plugin de notification pour Teams suit les mêmes principes :

  • Le Plugin est exécuté par le moteur de supervision (centreon-engine) lorsqu’un évènement de supervision générant une notification survient. 
  • important: Des commandes de notification doivent exister dans la configuration de Centreon afin que le moteur de supervision puisse exécuter le Plugin avec les bons paramètres (chemin vers le binaire, informations à inclure dans la notification…).
  • Ces commandes de notification sont associées à un utilisateur (au sens Centreon du terme) pour lequel on choisit de notifier explicitement en utilisant la commande et donc le Plugin de notification Teams.
  • L’utilisateur Centreon est associé à des ressources Centreon (Hôtes, Services, Activités Métiers) sur lesquelles on souhaite notifier des problèmes lorsque ceux-ci surviennent.

Comment configurer Microsoft Teams pour lui adresser les notifications Centreon

Pour recevoir vos alertes directement dans vos salons Microsoft Teams , il est nécessaire d’ajouter un Incoming Webhook à votre espace Team. Pour cela, rendez-vous dans votre application Teams, cliquez sur les trois petits points sur la gauche et recherchez l’application ‘Incoming Webhook’:

Remarque : Vous pouvez également réaliser l’opération ci-dessus en utilisant les (…) directement au niveau du Salon de votre choix.  

Ajouter l’application à une équipe :

Choisissez l’équipe et passez à l’étape suivante pour configurer votre connecteur :

Nommez votre application et, si vous le souhaitez, personnalisez l’image associée : 

Une fois que vous avez cliqué sur Create, vous obtenez une URL que vous copiez dans le presse-papier via l’icône associée. 

Mettez là de côté, vous en aurez besoin plus tard et finalisez votre configuration avec le bouton Done

Vous allez voir apparaître dans votre espace, une confirmation de l’ajout de l’application : 

Comment configurer Centreon ?

1. Installation du Plugin de notification

Afin d’exploiter la sonde, il est nécessaire d’installer le Plugin de notifications Teams sur les Collecteurs allant émettre des notifications vers Teams : 

yum install centreon-plugin-Notification-Teams

2. Utilisation de CLAPI pour créer les objets Centreon

Afin d’exploiter au maximum les capacités du Plugin, il est nécessaire de créer les objets suivants dans Centreon

  • 3 commandes de notifications, une pour chaque type d’objet (Hôte, Service, Activité Métier)
  • Un utilisateur – cet utilisateur sera le pendant d’un Salon Teams –  c’est-à-dire que pour chaque Salon que vous souhaitez alimenter en alerte, vous devrez créer un utilisateur associé à ce Salon. 

Pour simplifier, nous avons créé un fichier CLAPI sur mesure qui vous permet de créer vos utilisateurs et vos commandes de notifications en quelques secondes ! 

Copiez le contenu ci-dessous et placez-le dans un nouveau fichier du répertoire /tmp de votre serveur Central, par exemple /tmp/clapi-teams.import :

CMD;ADD;bam-notify-by-microsoft-teams;1;$CENTREONPLUGINS$/centreon_notification_teams.pl --plugin=notification::microsoft::office365::teams::plugin --mode=alert --custommode=webhookapi --teams-webhook='$CONTACTPAGER$' --bam --service-description='$SERVICEDISPLAYNAME$' --service-state='$SERVICESTATE$' --service-output='$SERVICEOUTPUT$' --date='$DATE$ $TIME$' --centreonurl='$CONTACTADDRESS1$'

CMD;setparam;bam-notify-by-microsoft-teams;enable_shell;0

CMD;setparam;bam-notify-by-microsoft-teams;command_activate;1

CMD;setparam;bam-notify-by-microsoft-teams;command_locked;0

CMD;ADD;host-notify-by-microsoft-teams;1;$CENTREONPLUGINS$/centreon_notification_teams.pl --plugin=notification::microsoft::office365::teams::plugin --mode=alert --custommode=webhookapi --teams-webhook='$CONTACTPAGER$' --host-name='$HOSTNAME$' --host-state='$HOSTSTATE$' --host-output='$HOSTOUTPUT$' --date='$DATE$ $TIME$' --action-links --centreon-url='$CONTACTADDRESS1$'

CMD;setparam;host-notify-by-microsoft-teams;enable_shell;0

CMD;setparam;host-notify-by-microsoft-teams;command_activate;1

CMD;setparam;host-notify-by-microsoft-teams;command_locked;0

CMD;ADD;service-notify-by-microsoft-teams;1;$CENTREONPLUGINS$/centreon_notification_teams.pl --plugin=notification::microsoft::office365::teams::plugin --mode=alert --custommode=webhookapi --teams-webhook='$CONTACTPAGER$' --host-name='$HOSTNAME$' --service-description='$SERVICEDESC$' --service-state='$SERVICESTATE$' --service-output='$SERVICEOUTPUT$' --date='$DATE$ $TIME$' --action-links --centreon-url='$CONTACTADDRESS1$'

CMD;setparam;service-notify-by-microsoft-teams;enable_shell;0

CMD;setparam;service-notify-by-microsoft-teams;command_activate;1

CMD;setparam;service-notify-by-microsoft-teams;command_locked;0

CONTACT;ADD;Microsoft-Teams-Consulting-Channel;notify_teams_consulting_channel;node@deadend;md5__2995c b0650c5f107230ed569a8c4d6e5;0;0;browser;local

CONTACT;setparam;notify_teams_consulting_channel;hostnotifperiod;24x7

CONTACT;setparam;notify_teams_consulting_channel;svcnotifperiod;24x7

CONTACT;setparam;notify_teams_consulting_channel;hostnotifopt;d,u

CONTACT;setparam;notify_teams_consulting_channel;servicenotifopt;w,u,c

CONTACT;setparam;notify_teams_consulting_channel;contact_pager;<SET_TEAMSWEBHOOK_URL>

CONTACT;setparam;notify_teams_consulting_channel;contact_address1;<SET_CENTREON_URL>

CONTACT;setparam;notify_teams_consulting_channel;contact_js_effects;0

CONTACT;setparam;notify_teams_consulting_channel;reach_api;0

CONTACT;setparam;notify_teams_consulting_channel;reach_api_rt;0

CONTACT;setparam;notify_teams_consulting_channel;contact_enable_notifications;1

CONTACT;setparam;notify_teams_consulting_channel;contact_activate;1

CONTACT;setparam;notify_teams_consulting_channel;show_deprecated_pages;0

CONTACT;setparam;notify_teams_consulting_channel;contact_ldap_last_sync;0

CONTACT;setparam;notify_teams_consulting_channel;contact_ldap_required_sync;0

CONTACT;setparam;notify_teams_consulting_channel;hostnotifcmd;host-notify-by-microsoft-teams

CONTACT;setparam;notify_teams_consulting_channel;svcnotifcmd;service-notify-by-microsoft-teams

ATTENTION !
Avant d’injecter le fichier, personnalisez les valeurs suivantes: 

  • ‘<SET_CENTREON_URL>’ par l’URL d’accès à votre Centreon.
  • ‘<SET_TEAMSWEBHOOK_URL> par l’URL du webhook Teams.

ll peut arriver que l’URL générée par Teams soit supérieure à 200 caractères, dans ce cas, il vous faut modifier la taille du champ en base de données. Vous pouvez le faire via la requête suivante sur la base de données centreon: ALTER TABLE centreon.contact MODIFY contact_pager VARCHAR(255);

Munissez-vous d’identifiants pour un utilisateur autorisé à utiliser CLAPI et possédant les droits nécessaires puis injectez le fichier en remplaçant les valeurs ci-dessous : 

centreon -u ‘<adminuser>’ -p ‘<password>’ -i /tmp/clapi-teams.import

L’import se déroule sans erreur et vous pouvez valider que tout a bien fonctionné en vérifiant le Contact créé dans le menu “Configuration > Utilisateurs” et en contrôlant sa configuration. Vous allez obtenir un écran de ce type : 

Vous pouvez maintenant inclure ce Contact dans un Groupe de Contacts ou l’associer aux ressources de votre choix et profiter de vos notifications directement dans Microsoft Teams ! 

En plus, directement depuis la notification, vous accédez rapidement au graphique de performances ou à l’élément ayant déclenché l’alerte ! Pratique, non ?! 

Pour aller plus loin…

Les notifications Centreon vous permettent de configurer des notifications dans de nombreux canaux et outils différents et d’adapter vos règles d’alertes en fonction de vos besoins. Retrouvez la documentation détaillée des concepts de notifications sur la documentation officielle.

Attention !

Si vous utilisez un proxy, ajoutez à la définition de vos commandes de notifications les options suivantes: –proxy-url=’protocol://your.proxy.domain:port’ –http-backend=curl (remplacer bien entendu l’adresse de votre proxy, le protocole et port utilisé par vos propres valeurs ;)). 

Si vous avez la moindre question, venez la poser sur le channel centreon-plugins de notre slack communautaire.

Tags :