Le module Centreon Dynamic Service Management (Centreon-DSM) permet la création de « bac à événements » pour chaque ressource supervisée par votre solution Centreon. La nouvelle version 2.2 se trouvant sur le GitHub de Centreon a été optimisée et est pleinement compatible avec Debian.
Centreon-DSM intercepte des événements systèmes, principalement des traps SNMP (services passifs ) , pour ensuite les stocker dans un ensemble de « slots » affecté à un hôte. Cette configuration s'appuie sur le service centreontrapd pour les événements trap SNMP.
Nous allons découvrir comment utiliser ce module avec une distribution Debian et une solution Centreon version 2.7x. Pour les utilisateurs de la distribution Centreon, il sera préférable d'utiliser les sources du GitHub car les rpm ne sont pas encore prêt.
Centreon-DSM intercepte des événements systèmes, principalement des traps SNMP (services passifs ) , pour ensuite les stocker dans un ensemble de « slots » affecté à un hôte. Cette configuration s'appuie sur le service centreontrapd pour les événements trap SNMP.
Nous allons découvrir comment utiliser ce module avec une distribution Debian et une solution Centreon version 2.7x. Pour les utilisateurs de la distribution Centreon, il sera préférable d'utiliser les sources du GitHub car les rpm ne sont pas encore prêt.
1 Principe de fonctionnement en mode standalone
Afin de vous aider à mieux comprendre le fonctionnement de votre installation, j'ai réalisé ce schéma. Vous trouverez les explications ci-dessous.
- Le démon snmptrapd reçoit un trap et l'envoie à centreontrapdforward
- Centreontrapdforward enregistre le trap dans le dossier spool prévu à cet effet
- Le démon centreontrapd récupère les événements dans le spool et décode les informations
- Il compare les événements aux informations enregistrées dans la base Centreon
- Si celles-ci correspondent à des événements prévues à DSM, le démon envoie une commande spéciale
- La commande dsmclient mémorise l'événement dans la base Centreon_storage
- Le démon dsmd lit les informations de la base Centreon et Centreon_storage.
- En fonction de la correspondance des événements et des slots libres, il envoie une commande externe dans la file d'attente de Centcore
- La commande est interprété par le moteur de supervision.
2 Préparation à l’installation du module
Pour installer le module Centreon-DSM, nous aurons besoin d’une application Full Centreon version 2.7x opérationnelle avec Centreon-Engine et Centreon-Broker. Le service SNMP doit être configuré et votre serveur doit accepter les Traps SNMP. Le service Centreontrapd doit aussi fonctionner car le module Centreon-DSM l’utilise. Nous avons besoin des outils git pour télécharger le dépôt du module Centreon-DSM. En effet, celui-ci n’a pas été packagé en archive sur le site de téléchargement de Centreon. Récupérons l’application git.
apt-get install git-core
Maintenant, il faut récupérer les sources du module que nous déposerons dans le dossier /usr/local/src
cd /usr/local/src git clone https://github.com/centreon/centreon-dsm.git cd centreon-dsm
Première chose à faire, rendre exécutable le script bash install.sh
chmod +x install.sh
Vous pouvez lancer l’installation.
3 Installation du module
3.1 installation en ligne de commande
Lancez la ligne de commande :
./install.sh -i
Le programme affiche ceci. Saisissez le chemin de la configuration centreon (/etc/centreon).
############################################################################### # # # Thanks for using Centreon-DSM # # # # v2.2.0 # # # ############################################################################### ------------------------------------------------------------------------ Checking all needed binaries ------------------------------------------------------------------------ rm OK cp OK mv OK /bin/chmod OK /bin/chown OK echo OK more OK mkdir OK find OK /bin/grep OK /bin/cat OK /bin/sed OK ------------------------------------------------------------------------ Load parameters ------------------------------------------------------------------------ Please specify the directory with contain "instCentWeb.conf" > /etc/centreon
L’installation continue
Parameters was loaded with success OK ------------------------------------------------------------------------ Backup Centreon-DSM ------------------------------------------------------------------------ ------------------------------------------------------------------------ Install Centreon-DSM web interface ------------------------------------------------------------------------ Setting right OK Setting owner/group OK Copying module OK ------------------------------------------------------------------------ Install Centreon-DSM cron ------------------------------------------------------------------------ Changing macro OK Copy cron in cron.d directory: OK ------------------------------------------------------------------------ Install Centreon-DSM binaries ------------------------------------------------------------------------ Changing macros OK Setting right OK Setting owner/group OK Copying module OK Changing macros for init script OK Set owner for init script OK Set mod for init script OK Copying init script OK Changing macros for default script OK Set owner for default script OK Set mod for default script OK Copying default script OK ------------------------------------------------------------------------ End of Centreon-DSM installation ------------------------------------------------------------------------ Installation of Centreon-DSM is finished OK See README and the log file for more details. ############################################################################### # # # Go to the URL : http://your-server/centreon/ # # to finish the setup # # # # Report bugs at # # https://github.com/centreon/centreon-dsm # # # ###############################################################################
Configurez son démarrage automatique.
update-rc.d dsmd defaults
Continuons avec l’interface graphique de Centreon.
3.2 installation en mode Web
Connectez-vous sur votre interface Centreon. Sélectionnez le menu Administration / Extension. Cliquez sur Modules et ensuite cliquez sur l’icône Actions pour installer le module.
Suivez les instructions des copies d’écran ci-dessous.
Le module Centreon-DSM est installé.
4 Configuration du module
Maintenant, passons à la configuration du module. Celle-ci se passe en plusieurs étapes :
- Création d'un modèle de service passif et ajout d’une macro ALARM_ID
- Association des traps avec un template générique
- Création d’un groupe de slots
- Génération et application de la configuration
- Création d’un trap SNMP adapté au module DSM
- Génération et application de la configuration des traps
- Démarrage du service dsmd
- Création d'un modèle de service passif et ajout d’une macro ALARM_ID
- Association des traps avec un template générique
- Création d’un groupe de slots
- Génération et application de la configuration
- Création d’un trap SNMP adapté au module DSM
- Génération et application de la configuration des traps
- Démarrage du service dsmd
4.1 Création d'un modèle de service passif
Avant de créer votre groupe de slots, vous devez associer celui-ci à un hôte par le biais d'un modèle de service passif. Il est préférable que ce modèle de service soit le plus générique possible pour être utilisé avec les traps sélectionnés. exemple : un modèle de service trap-dsm basé sur un modèle passif. Voici mon exemple, j’utilise ce modèle que j'utiliserai pour tous mes serveurs Linux.
4.2 Association des traps avec un modèle de service
Ensuite il faut rajouter une relation entre les traps que l'on veut intercepter et l'hôte. Pour éviter une redondance d'envoi de commandes dsmclient, on utilisera un template le plus générique possible et qui n'est utilisé qu'une seul fois par hôte. En général le template ping-lan est le plus approprié. Ajoutez cette relation entre votre modèle de service et les traps utilisés par Centreon-DSM comme le montre cet exemple ci-dessous :
4.3 Création d’un groupe de slots
Passons à la création d’un groupe de slots pour un hôte. Un slot est un genre de bac pouvant réceptionner et mémoriser un trap SNMP. Centreon-DSM mémorisera les traps SNMP suivantes dans les slots vides. Si les slots sont occupés, Centreon-DSM mémorisera les traps suivant en base de données. Le but étant de garder une trace des traps SNMP nécessitant un acquittement. Si le trap est acquitté, le slot est automatiquement libéré.
Pour créer un groupe de slot, sélectionnez le menu Administration (1) / Extensions (2). Cliquez sur le lien Configure (3) sous le menu Dynamic Services. Cliquez sur Add (4) pour ajouter un groupe de slot.
Pour créer un groupe de slot, sélectionnez le menu Administration (1) / Extensions (2). Cliquez sur le lien Configure (3) sous le menu Dynamic Services. Cliquez sur Add (4) pour ajouter un groupe de slot.
La configuration du groupe de slots ne présente pas de difficultés majeurs. Vous devez associer votre groupe à un hôte. Ce groupe sera basé sur le modèle de service passif créé précédemment.
Ajoutons la commande check_centreon_dummy qui servira pour les acquittements utilisateur. Le texte « Initial OK state » peut être modifié en fonction de vos besoins. Les champs obligatoires sont le nombre de slot et le nom du préfixe.
4.4 Application de la configuration
Comme pour une modification de configuration, il faut générer la nouvelle configuration et l’appliquer au moteur de supervision. Vous obtiendrez ce résultat avec la création de 10 slots nommé de slot-0001 à slot-0010 pouvant mémorisé les traps SNMP.
4.5 Création du trap SNMP
Dans un premier temps, nous allons modifier deux traps génériques : les traps Linkdown et Linkup. Sélectionnez le menu Configuration / SNMP Traps.
Pour chaque trap linkDown et linkUp, modifiez la configuration comme ceci. Décochez la cas Submit result et cochez Execute special command. La seule différence se situe au niveau dela ligne de commande pour envoyer un état critique pour linkDown ou un état OK pour linkUP. Saisissez la ligne suivante pour linkDown :
/usr/share/centreon/bin/dsmclient.pl -H @HOSTADDRESS@ -o 'interface $1 linkdown' -i interface$1 -s 2 -t @TIME@
Pour éviter la redondance d'alerte, il peut être intéressant de vérifier les relations de votre trap avec les services et les modèles de service. Pour cela, vous avez un onglet Relation pour chaque trap.
Saisissez la ligne suivante pour linkUp :
/usr/share/centreon/bin/dsmclient.pl -H @HOSTADDRESS@ -i interface$1 -s 0 -t @TIME@
Le paramètre -i est important, cela doit représenter un identifiant unique du trap concerné afin de permettre un acquittement automatique en cas de retour à la normal. Je vous explique : dans notre exemple, nous interceptons les déconnexions des interfaces réseaux. Nous prenons comme identifiant unique, le nom de l’interface réseau se trouvant dans le paramètre $1 avec le préfixe interface. Si bien que lorsque l’interface retourne un état OK, Centreon-DSM ne vas pas occuper un nouveau slot mais va libérer le slot contenant l’identifiant correspondant.
Pour avoir un fichier de log correspondant à cette commande, vous pouvez rajouter cette option dans la ligne de commande.
--logfile=/var/log/centreon/centreon-dsmclient.log
Le démon dmsd a son propre fichier de log centreon-dsm.log et sera créé dans ce répertoire /var/log/centreon.
4.6 Application de la configuration des traps
Lorsque votre configuration est terminée, appliquez votre configuration.
4.7 Démarrage du service
Pour finir, lancer le démarrage du service dsmd.
service dsmd start
4.8 Test de notre configuration
Nous allons simuler une coupure réseau de notre serveur de supervision avec six cartes réseaux. Lançons les commandes de génération de traps.
snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 1 ifadminStatus i 2 ifOperStatus i 2 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 2 ifadminStatus i 2 ifOperStatus i 2 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 3 ifadminStatus i 2 ifOperStatus i 2 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 4 ifadminStatus i 2 ifOperStatus i 2 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 5 ifadminStatus i 2 ifOperStatus i 2 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3 ifIndex i 6 ifadminStatus i 2 ifOperStatus i 2
Avec une configuration classique d’un service passif associé avec les traps SNMP, vous ne verriez que le dernier événement dans la vue temps réel. Avec Centreon-DSM, chaque événement est stocké dans un slot comme le montre la vue ci-dessous.
Libérons les slots avec les commandes suivantes :
snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 1 ifadminStatus i 1 ifOperStatus i 1 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 2 ifadminStatus i 1 ifOperStatus i 1 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 3 ifadminStatus i 1 ifOperStatus i 1 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 4 ifadminStatus i 1 ifOperStatus i 1 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 5 ifadminStatus i 1 ifOperStatus i 1 snmptrap -v2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.4 ifIndex i 6 ifadminStatus i 1 ifOperStatus i 1
Les slots se mettent en état OK avec l’information Free Slot.
5 Exemple d’utilisation de Centreon-DSM
Maintenant, regardons un exemple concret avec un commutateur ethernet manageable. L’objectif étant de superviser les états up et down de chaque port. Nous utiliserons les traps SNMP. Nous utiliserons pas de modèle de service passif mais un modèle très souvent utilisé pour les hôtes génériques, le modèle ping-LAN pour rajouter la macro ALARM_ID. Notre hôte switch_giga aura un point de service basé sur le modèle ping-LAN.
5.1 modification du modèle Ping-LAN
Ajoutons la macro ALARM_ID
Ajoutons les relations des traps. Nous utiliserons les mêmes trap du chapitre précédent.
5.2 Ajout d’un groupe de slots
Créons notre groupe de slots pour notre switch. Il s’agit d’un groupe de 5 slots et basé sur le modèle Ping-LAN.
5.3 Application de la configuration
Appliquez la configuration, vous devez obtenir ceci.
5.4 Test de la configuration
Nous allons voir en détail, le fonctionnement de notre trap. Arrêtons le service centreontrapd afin de visualiser le détail du trap.
service centreontrapd stop
Lorsque nous débranchons le câble du port 4 du switch, un trap arrive sur le serveur de supervision.
tail -f /var/log/syslogrésultat
Oct 31 11:47:55 centreon277 snmptrapd[13247]: 2016-10-31 11:47:55[UDP: [192.168.0.152]:161->[192.168.0.174]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (766865138) 88 days, 18:10:51.38#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.6.3.1.1.5.3#011.1.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4#011.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: down(2)#011.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: down(2)#011.1.3.6.1.4.1.11863 = STRING: "Port4 linkDown"
Celui-ci est traité par le script centreontrapdforward et un fichier est créé dans /var/spool/centreontrapd. Voici le contenu et la correspondance avec les variables $1 à $4 utilisé par la configuration des traps.
La variable $1, correspondant au numéro du port, nous servira pour créer l’identifiant unique. Relançons le service centreontrapd.
service centreontrapd start
Le trap est automatique traité par centreontrapd, puis par le script dsmclient.pl pour l’insérer en base. Le service dsmd traitera l’information et ajoutera l’événement dans un slot.
Lorsque le câble sera inséré de nouveau dans le switch, le trap correspondant au port 4 libérera le slot automatiquement comme ci-dessous.
Cet article est terminé. J’attire votre attention que si vous changez le modèle de service dans le groupe de slot, il faudra reprendre la configuration de votre hôte. Dans l'article suivant, vous découvrirez Centreon-DSM en architecture distribuée. Centreon-DSM peut aussi être utilisé seul si vous n'utilisez pas les Traps SNMP. Cette utilisation fera l'objet d'un prochain tutoriel.
Références
La documentation officielle Centreon : https://documentation.centreon.com/docs/centreon-dsm/en/latest/