Module auto-discovery

Présentation

Centreon auto-discovery est un module centreon permettant la détection des disques, FS et interfaces réseau.

Fonctionnement

Installation

Pré-requis

Sur le serveur central git doit être installé

yum install -y git

On télécharge les plugins

cd /usr/src
git clone https://github.com/centreon/centreon-plugins.git
Initialized empty Git repository in /usr/src/centreon-plugins/.git/
remote: Counting objects: 28756, done.
remote: Compressing objects: 100% (144/144), done.
remote: Total 28756 (delta 103), reused 162 (delta 51), pack-reused 28527
Receiving objects: 100% (28756/28756), 7.83 MiB | 3.80 MiB/s, done.
Resolving deltas: 100% (15920/15920), done.
cd centreon-plugins
chmod 755 centreon_plugins.pl
cp -rp ./* /usr/lib/nagios/plugins/

Déploiement des plugins sur les pollers

Vous pouvez le faire manuellement via un scp ou utiliser un outil de déploiement type RUDDER

Sur le serveur database

Création d’un user clapi pour la création automatique

CREATE USER 'clapi'@'%' IDENTIFIED BY "Un Mot De Passe";
GRANT ALL PRIVILEGES ON centreon.* TO 'clapi'@'%' IDENTIFIED BY "Un Mot De Passe" with grant option;
FLUSH PRIVILEGES;
  1. Le « % » est important pour permettre aux pollers et au central de pouvoir se connecter sur le serveur database.
  2. On donne les droits au user clapi sur la database centreon
  3. On active les droits

Sur le serveur central et database

Installation des modules perl

yum install perl net-snmp-perl -y<br>yum install perl-XML-LibXML perl-JSON perl-libwww-perl perl-XML-XPath perl-Net-Telnet perl-Net-DNS perl-DBI perl-DBD-MySQL perl-DBD-Pg

Configuration de snmp

On sauvegarde le fichier d’origine

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.ori

On créé un nouveau fichier

vi /etc/snmp/snmpd.conf 

et on ajoute dans le fichier vide la ligne suivante

  • rocommunity C3ntr30n

et on redémarre le service

service snmpd restart
Arrêt de snmpd :                                           [  OK  ]
Démarrage de snmpd :                                       [  OK  ]

Contrôle du bon fonctionnement de snmp

snmpwalk localhost -c C3ntr30n -v 2c SNMPv2-MIB::sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centreon-central-master 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64

Utilisation du plugin auto discovery de centreon

Préambule

Afin de pouvoir faire de l’auto discovery dans centreon nous devons besoin :

  1. De connaitre la liste des champs qui seront remontés par la découverte
  2. De récupérer un métrique nous permettant de « grapher » et d’afficher un status dans l’interface.

Sur les interfaces

Les 4 commandes ci-dessous devront être implémentées dans centreon afin de pouvoir faire de l’auto-discovery.

Découverte des interfaces

/usr/lib/nagios/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=list-interfaces --hostname=localhost --snmp-version=2 --snmp-community=C3ntr30n --disco-show
<?xml version="1.0" encoding="utf-8"?>
<data>
  <label status="up" name="lo" total="10" interfaceid="1"/>
  <label status="up" name="eth0" total="1000" interfaceid="2"/>
  <label status="up" name="eth1" total="1000" interfaceid="3"/>
</data>

Explications :

  • –plugin=os::linux::snmp::plugin –> Nous utilisons le plugin os::linux::snmp::plugin
  • –mode=list-interfaces –> Affiche les interfaces réseau
  • –disco-show –> Affiche toutes les interfaces découvertes

Lister les champs retournés par la découverte

/usr/lib/nagios/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=list-interfaces --hostname=localhost --disco-format
<?xml version="1.0" encoding="utf-8"?>
<data>
  <element>name</element>
  <element>total</element>
  <element>status</element>
  <element>interfaceid</element>
</data>

Explications :

  • La commande de découverte remontera 4 champs
    • name
    • total
    • status
    • interfaceid

Sur les FS

Découverte des unités de stockage

/usr/lib/nagios/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=list-storages --hostname=localhost --snmp-version=2 --snmp-community=C3ntr30n --disco-show
<?xml version="1.0" encoding="utf-8"?>
<data>
  <label name="/" total="20516302848" storageid="31"/>
  <label name="/dev/shm" total="522235904" storageid="35"/>
  <label name="/boot" total="499355648" storageid="36"/>
  <label name="/var/log" total="10434699264" storageid="37"/>
</data>

Lister les champs retournés par la découverte

/usr/lib/nagios/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=list-storages --hostname=localhost --disco-format
<?xml version="1.0" encoding="utf-8"?>
<data>
  <element>name</element>
  <element>total</element>
  <element>storageid</element>
</data>

explications :

  • La découverte des unités de stockage remontera :
    • name
    • total
    • storageid

 Implémentation dans centreon

Découverte des interfaces

Durant ce chapitre nous respecterons le modèle de conception de centreon

Création de la commande

La création d’une commande de découverte se fait via le menu Configuration > Commands > Discovery

Pour créer une nouvelle commande

Cliquer sur le bouton add comme le montre la capture ci-dessous

Commande pour récupérer les champs de la découverte

Liste des champs à renseigner :

  • Command Name
    • OS-Linux-SNMP-Traffic-Discovery-Arguments
  • Commande line
    • $USER1$/centreon_plugins.pl –plugin=os::linux::snmp::plugin –mode=list-interfaces –hostname=localhost –disco-format
Commande pour récupérer les interfaces

Liste des champs à renseigner :

  • Command Name
    • OS-Linux-SNMP-Traffic-Discovery
  • Commande line
    • $USER1$/centreon_plugins.pl –plugin=os::linux::snmp::plugin –mode=list-interfaces –hostname=$HOSTADDRESS$ –snmp-version=$_HOSTSNMPVERSION$–snmp-community=$_HOSTSNMPCOMMUNITY$ –disco-show

Explications :

  • Nous utilisons la variable $HOSTADDRESS$ pour récupérer l’adresse IP du serveur que nous voulons superviser
  • Nous utilisons la macro $_HOSTSNMPVERSION$ pour récupérer la version SNMP définie par défaut du serveur
  • Nous utilisons la macro $_HOSTSNMPCOMMUNITY$ pour récupérer la communauté SNMP définie par défaut du serveur

Création du template de service

Commande pour récupérer les champs de la découverte

Liste des champs à renseigner :

  • Command Name
    • OS-Linux-SNMP-Storage-Dicovery-Arguments
  • Commande line
    • $USER1$/centreon_plugins.pl –plugin=os::linux::snmp::plugin –mode=list-interfaces –hostname=localhost –disco-format
Commande pour récupérer les interfaces

Liste des champs à renseigner :

  • Command Name
    • OS-Linux-SNMP-Storage-Dicovery
  • Commande line
    • $USER1$/centreon_plugins.pl –plugin=os::linux::snmp::plugin –mode=list-storages –hostname=$HOSTADDRESS$ –snmp-version=$_HOSTSNMPVERSION$–snmp-community=$_HOSTSNMPCOMMUNITY$ –disco-show

Explications :

  • Nous utilisons la variable $HOSTADDRESS$ pour récupérer l’adresse IP du serveur que nous voulons superviser
  • Nous utilisons la macro $_HOSTSNMPVERSION$ pour récupérer la version SNMP définie par défaut du serveur
  • Nous utilisons la macro $_HOSTSNMPCOMMUNITY$ pour récupérer la communauté SNMP définie par défaut du serveur

Création de la règle de découverte

Les règles de découvertes se font via le menu Configuration > Services > Rules

Comme d’hab on créer une nouvelle règle en cliquant sur add

Onglet général

Liste des champs à renseigner :

  • Rule name : OS-Linux-SNMP-Network-Interfaces
  • Command Macro : OS-Linux-SNMP-Traffic-Discovery-Argument
  • Command Discover : OS-Linux-SNMP-Traffic-Discovery
  • Service Template: OS-Linux-Traffic-Generic-Id-SNMP-Custom
  • Service display name : Trafic-$name$
  • Host templates : OS–Linux-SNMP-Custom

onglet Inclusions/Exclusion  Macro

Une fois dans l’onglet les attribut de découverte doivent apparaître comme le montre la capture ci-dessous

Exclusion

Comme nous l’avons vu ci-dessus lors des tests du plugin de découverte, il découvre toutes les interface. Cependant il n’est pas nécessaire de superviser l’interface pour la boucle locale. Nous allons donc l’exclure des remontées de la découverte des interfaces.

Dans la partie exclusion nous allons ajouter une nouvelle entrée en cliquant sur Add a new entry

  • Dans le champs string nous allons indiqué la variable qui contient le nom de l’interace : $name$
  • dans le champs regex nous allons exclure l’interface lo

Dans la partie macro nous voyons que les macros assignées au template OS-Linux-Traffic-Generic-Id-SNMP-Custom sont bien là.

Nous allons donc renseigné la macro INTERFACEID avec la variable remontée par la commande de découverte. C’est à dire : $interfaceid$

Nous laisserons les autres Macros a vide afin d’hériter des valeurs par défaut des différents template de service.

Onglet Avancé

Les champs à renseigner :

  • String : @SERVICENAME@
  • Regexp : Traffic-eth(\d+)
  • Replace : Traffic-eth-$1

Explications :

L’idée et de mettre un « – » entre le nom de l’interface et son index

  • String : c’est le nom qui sera créé par le champ Service display name de l’onglet général
  • Regexp : nous récupérons le numéro de l’interface (\d+). Le « d » remonte la valeur numérique.
  • Replace : le regexp stocke le résultat dans la variable $1. Le résultat obtenu étant la concaténation de la chaine « Traffic-eth- » et la valeur de $1

Une fois toute ces opérations effectuées nous pouvons sauvegarder notre règle.

Table des matières
WordPress Appliance - Powered by TurnKey Linux