Dans le cas où vous avez une instance Rocket.Chat et que vous supervisez votre SI à l'aide de Centreon (ou Nagios), cet article va sûrement vous être utile ! 💡

Je vais vous présenter dans cet article le plugin "Rocketchat-Nagios" (oui, tout simplement 😁). Lorsqu'un service sera dans un état spécifique, une notification sera envoyée dans un salon Rocket.Chat.

Attention ! La repository GitHub est maintenant archivée, cela signifie qu'il n'est plus mis à jour. Cependant, le fonctionnement est normal (testé avec Centreon 21.04, et Python2.7 RàS).

Installation du plugin

C'est tout simplement un script Python qui se chargera de tout faire.

Sur le serveur de supervision, cloner le projet dans le /tmp :

git clone https://github.com/andrefreitas/rocketchat-nagios.git

Récupérer le fichier rocketchat.py, et le placer dans : /usr/lib64/nagios/plugins/rocketchat.py

Création du webhook

Le plugin a besoin de poster des messages dans un salon Rocket.Chat, à travers ce qu'on appelle un "webhook". Sur Rocket.Chat, en tant qu'administrateur, aller dans les paramètres d'administration, à la rubrique "Intégrations".

Créer une nouvelle intégration de type "Incoming" :

  • Activé ==> Oui
  • Nom (optionnel) ==> Supervision
  • Publier sur le canal ==> #supervision

Adaptez la configuration en fonction, puis sauvegardez. Vous allez devoir récupérer l'URL de Webhook, utile pour paramétrer dans Centreon. Elle doit être de cette forme :

https://URL_DE_VOTRE_ROCKETCHAT/hooks/VALEUR_DU/_JETON

Le webhook est créé !

Test manuel

Avant de créer la commande de notification, on va lancer la commande à la main pour valider son fonctionnement :

$(which python) /usr/lib64/nagios/plugins/rocketchat.py \
    --url "https://WEBHOOK_URL" \
    --hostalias "Test" \
    --servicedesc "Test_service" \
    --servicestate "CRITICAL" \
    --serviceoutput "Test d'une notification CRITICAL" \
    --nagiosurl "https://CENTREON_URL/"

Si tout se passe bien, vous avez un retour dans votre canal Rocket.Chat !

Création de la commande

Maintenant que le test est concluant, on va créer la commande de notification. Dans Configuration > Commandes > Notifications :

  • Command Name : notify-service-via-rocketchat

  • Command Line :

    /bin/python $USER1/rocketchat.py --url "https://WEBHOOK_URL" --hostalias "Test" --servicedesc "Test_service" --servicestate "CRITICAL" --serviceoutput "Test d'une notification CRITICAL" --nagiosurl "https://CENTREON_URL/"

Laissez le reste par défaut (si besoin refaire la manipulation pour les hôtes, lorsqu'un d'entre eux est down par exemple...), puis créer le contact associé. Dans Configuration > Users > Contacts/Users :

  • Alias / Login : rocketchat
  • Full Name : rocketchat
  • Email : centreon@domain.tld
  • Notification : Yes

Sauvegarder les changements, puis au niveau du template d'hôte (ou service), activez les notifications et lier avec le contact fraîchement créé.

Voici le lien vers le projet et sa documentation officielle