Auto découverte d’hôtes SNMP pour Centreon

modifié le : 18 juillet 2024,
par Guillaume Chéramy
 

Présentation

Open Centreon Discover est un module indépendant de Centreon qui permet de faire l'autodiscover des équipements SNMP, de les ajouter à la plateforme Centreon à l'aide de la CLAPI.

OCD permet également un scan des réseaux en tâche de fond, et cerise sur la gateau, il est possible d'affecter automatiquement les templates en fonction de l'OS détecté.

Source: L'atelier de Kermith et Github du créateur

Installation

Téléchargement du module

Créer un dossier:

mkdir /usr/share/discovery

Récupérer le dépôt:

git clone https://github.com/romnvll/Open-Centreon-Discovery.git

Configuration d'Apache

Pour qu'Apache reconnaisse OCD, il faut créer le fichier de configuration:

vim /etc/apache2/conf-available/discovery.conf

Copiez ces lignes dans le fichier:

###########################################
Alias /discovery /usr/share/discovery/
<LocationMatch ^/discovery/(.*\.php(/.*)?)$>
    ProxyPassMatch fcgi://127.0.0.1:9042/usr/share/discovery/$1
</LocationMatch>
ProxyTimeout 300
<Directory "/usr/share/discovery">
    DirectoryIndex index.php
    Options Indexes
    AllowOverride all
    Order allow,deny
    Allow from all
    Require all granted
    <IfModule mod_php5.c>
        php_admin_value engine Off
    </IfModule>
    AddType text/plain hbs

</Directory>

RedirectMatch ^/$ /discovery
###########################################

En fonction de votre configuration vous devrez modifier le port d'écoute de php-fpm (904x). Pour savoir quel port est utilisé: netstat -paunt | grep php

Redémarrez Apache:

a2enmod discovery
systemctl restart apache2

Installation des fichiers

Déplacez vous dans le dossier téléchargé au préalable et copiez les fichiers dans son répertoire dédié:

cd Open-Centreon-Discovery
cp -r * /usr/share/discovery

Pour que le scan en tâche de fond puisse être réalisé, Apache nécessite les permissions sur ce dossier:

chown -R www-data: /usr/share/discovery

Modifiez le fichier de configuration d'OCD. Un fichier d'exemple de configuration existe déjà, je vous suggère de l'utiliser (vous pouvez utiliser le fichier d'exemple déjà présent mais il faudra le renommer):

mv /usr/share/discovery/config.{php.example,php}
vim /usr/share/discovery/config.php

Placez y le login/password d'un utilisateur ayant les droits de modification avec CLAPI, ainsi que le chemin de CLAPI (admin dispose des droits, mais vous pouvez créer un utilisateur de service dédié à cela) :

//Vos identifiants centreon
$config['centreon']['user'] = 'user';
$config['centreon']['password'] = 'password';

//chemin de clapi
$config['centreon']['clapi'] = '/usr/share/centreon/bin/centreon';

Scanner manuellement le réseau

Connexion à l'interface du module

Connectez vous à l'interface web d'OCD avec l'url http://ip-centreon-central/discovery avec l'utilisateur que vous avez déclaré dans le fichier config.php

index OCD.png

Vous arriverez alors sur la page suivante:

recherche OCD.png

Si à ce moment vous tombez sur une page blanche, il se peut que vos identifiants soient incorrects.

La découverte SNMP avec ce module ne prend en charge que la v1 et la v2c.

Nous reviendrons plus tard sur le message concernant le scan en tâche de fond.

Configuration du réseau à scanner

Pour lancer votre premier scan afin de trouver des hôtes qui ne seraient pas intégrés à votre plateforme Centreon, vous devez entrer manuellement les informations nécessaires au scan: le réseau, la communauté snmp, la version et le timeout.

Une fois ces paramètres rentrés, cliquez sur le bouton Scan.

conf scan rsx.png

Le réseau

Il s'agit du sous-réseau en notation CIDR sur lequel vous voulez détecter des hôtes.

La communauté

Il n'est pas forcément nécessaire de configurer le fichier de configuration snmpd.conf si vous utilisez la communauté public avec ses paramètres par défaut, mais dans le cas où vous souhaiteriez utiliser une communauté personnalisé avec vos propres vues et ouvertures de MIB, petit rappel :

Déplacez le fichier de conf par défaut et créez le votre:

mv /etc/snmp/snmpd.{conf,conf.default}

Il est toujours utile de garder de côté ce fichier par défaut.

vim /etc/snmp/snmpd.conf
agentAddress udp:161
#       sec.name    source          community
com2sec  masecu     ip.srv.centreon   macommu

#       groupname   securityModel   securityName
group   groupdesecu  v1             masecu
group   groupdesecu  v2c            masecu

#       name    incl/excl       subtree         mask(optional)
view    mavue   included        .1.3.6.1.2.1.1
view    mavue   included        .1.3.6.1.2.1.25.1.1

#       group       context sec.model   sec.level   prefix  read    write   notif
access  groupedesecu ""        any        noauth      exact   mavue   none    none

Redémarrez snmpd:

systemctl restart snmpd

Le timeout

Si le scan est trop long vous pouvez redescendre ce timeout à des valeurs inférieures. Attention toutefois, un timeout trop court peut empêcher la découverte de certains équipements.

Le résultat du scan

Après avoir cliqué sur Scan, au bout de quelques secondes vous arriverez sur cette page:

resultscan 1.png

Cette liste affiche les hôtes découvrables (voir config snmp) et qui ne sont pas encore intégrés à Centreon.

Vous pouvez cliquer sur le bouton Magie et celui-ci affectera automatiquement le template d'hôte associé à l'os détecté.

Il sera également possible de rajouter manuellement deux autres templates supplémentaires.

Veillez également à sélectionner le bon poller, cochez le ou les équipement(s) à exporter puis cliquez sur Valider.

resultscan 2.png

Deux choix s'offrent alors à vous:

resultscan 3.png

  1. Soit la configuration actuelle vous suffit, et vous pouvez cliquer sur Appliquer et redémarrer le moteur ce qui revient à faire l'export de la nouvelle configuration dans l'interface Centreon;
  2. Soit vous cliquez sur Appliquer dans centreon ce qui vous permet d'intégrer ces hôtes dans Centreon, sans pour autant appliquer de suite la nouvelle configuration. Libre à vous ensuite d'affiner selon vos besoins la configuration de vos hôtes dans l'interface web Centreon.

Par acquis de conscience vérifiez l'intégralité des hôtes et services déployés.

Background autodiscover

Le scan manuel reste un outil pratique pour des besoins ponctuels ou une petite structure, mais lorsque vos besoins couvrent un large panel d'équipements, réseaux et communautés différentes, Open Centreon Discovery embarque un autre outil qui va vous simplifier la vie et vous faire gagner du temps: la découverte SNMP en tâche de fond.

Ajout de réseaux à scanner

Il faut au préalable venir écrire les réseaux à scanner dans le fichier de configuration d'OCD:

vim /usr/share/discovery/config.php

La variable $config['backGroundScanUse'] est activé par défaut. C'est elle qui défini l'activation ou l'arrêt du processus.

La variable $config['backGroundRoot'] permet de déclarer le chemin où viendra s'enregistrer le fichier de résultat du scan ( resultScan ).

Attention: si vous modifiez ce chemin, veillez à bien donner les droits nécessaires au fonctionnement du backgroundScan:

  • L'application de tâche de fond doit avoir les droits en lecture/écriture.
  • L'application web nécessite les droits en lecture.
//pour le scan BackGround

//activation du scan backGround pour les /16 et plus : true or false
$config['backGroundScanUse'] = true ;
//chemin de l'executable scanBackGround

$config['backGroundRoot'] = '/usr/share/discovery';

$config['backGroundScan'][0] = array("network" => "192.168.1.0/24",
                                    "community"=>"public",
                                    "version"=>"2" );

$config['backGroundScan'][1] = array("network" => "192.168.4.0/24",
                                     "community"=>"macommuperso",
                                    "version"=>"2" );

Planifier la tâche

Après avoir configuré vos réseaux, il est temps de planifier vos scans.

Tout d'abord, tester la commande qui exécute le scan:

cd /usr/share/discovery && /usr/bin/php -q backGroundScan.php

Le cd ici est indispensable. Le code php étant rédigé avec des chemins relatifs il est nécessaire de se placer dans le dossier discovery.

ATTENTION: après avoir testé manuellement la commande il se peut que les droits du fichier resulScan soit attribué à l'utilisateur qui a lancé la commande. Il est indispensable de rendre apache propriétaire du fichier!!!

chown www-data: resultScan

Au bout de quelques secondes vous devriez voir apparaitre vos hôtes sur l'interface web d'OCD

resultscan 4.png

Cliquez ensuite sur Go.

Vous arriverez alors sur la même page que le scan manuel où vos hôtes seront listés, avec le bouton magie pour associer vos templates.

Merci à romnvll, qui a créé ce module et qui m'a aidé à sa mise en place, et merci à Kermith pour ses tutos très éclairés qui m'ont inspiré.

Article issue de la documentation et R&D faite par Charles Tetu, merci à toi.