Monitoring & Surveillance SLIM CHAKROUN (ENSI) EMNA BEN HADJ YAHIA (RT3) SAFA GALLAH (RT3)
Table des matières: I. Présentation de l'atelier II. Supervision des réseaux 1. objectif 2.Problématique 3. Solutions offertes III. Solution sélectionnée : Nagios 1.les outils utilisés 2.Nagios 3.Les agents et les protocoles 3.1 Le protocole SNMP 3.2 Les plugins locaux 3.3 NRPE et NCSA 3.4 NSClient 4.Centreon 5.Cacti 6.NDOutils IV. Déploiement et installation 1. Installation des outils V. Architecture : VI. Configurations 1.Fichiers de configurations 2.Définition des contacts 3.Configuration des hôtes et des services à surveiller VII. Conclusion 1
2
I. Présentation de l'atelier: Actuellement aucune entreprise ne peut se passer d'outils informatiques, et très souvent un réseau informatique de taille plus ou moins importante est mis en œuvre. Le nombre des machines dans ces réseaux peut parfois devenir extrêmement élevé; La maintenance ainsi que la gestion de ces parcs informatiques deviennent alors des enjeux cruciaux, d'autant plus qu'une panne du réseau peut parfois avoir des conséquences catastrophiques.. C'est pourquoi les administrateurs réseau font appel à des logiciels de surveillance et de supervision de réseaux. Dans ce document on va présenter et définir ce que c est que l administration réseau, énoncer un petit comparatif des solutions actuelles du marché puis nous pencher sur celle que nous avons choisie de mettre en place en présentant les notions l entourant. II. Supervision de réseaux: La supervision de réseaux peut être définie comme l utilisation de ressources réseaux adaptées dans le but d obtenir des informations (en temps réel ou non) sur l utilisation ou la condition des réseaux et de leurs éléments afin d assurer une bonne qualité et une répartition optimale de ceux-ci. 1. Objectif L objectif d une supervision de réseaux peut ainsi être résumé en trois points : -> Etre réactif en alertant l administrateur en cas de dysfonctionnement d une partie du système d information. ->Etre pro actif en anticipant les incidents. ->Cibler le problème. 2. Problématique La supervision de réseau nécessite des outils adaptés aux différents composants du réseau. Un parc informatique en général est doté de machines sous Linux, Windows ainsi que de switches, routeurs, impriment, etc. 3
Nous devons donc trouver, comme tout bon produit de supervision, un produit capable de superviser l ensemble des équipements provenant de différents constructeurs et ayant des modes de gestion hétérogènes. -> Il s agit alors de trouver un produit reposant sur un protocole ou un environnement normalisé afin de pouvoir servir de point d entrée unique pour regrouper toutes les informations du réseau 3. Solutions offertes: De nombreuses plateformes de supervision existent aujourd hui. Certaines se contentent de connaître à tout instant l état des nœuds du réseau, d autres permettent également de connaître l état des services sur ces nœuds, les derniers offrent la possibilité de ressortir de nombreuses statistiques du réseau permettant une analyse assez fine. Pour notre cas d'étude, on penchera sur une des offres de supervision libres qui sont professionnels. Parmi ces solutions, Nagios est sans contexte le plus répandu et le plus suivi par la communauté des développeurs. III. Solution sélectionnée : Nagios 1. Les outils utilisés : -> Les agents et les protocoles «NRPE,NCSA,SNMP,NS Client» ->Centreon ->Cacti ->Ndoutils 2. Nagios: C'est une application permettant la surveillance système et réseau. Elle surveille les hôtes et services que vous spécifiez, vous alertant ainsi des anomalies détectées et lorsqu'ils reviennent dans l'état nominal; offrant les possibilités suivantes: -> Superviser des protocoles réseaux : (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, LDAP, etc.) ; -> superviser les ressources des serveurs (charge du processeur, occupation des disques durs, utilisation de la mémoire paginée) et ceci sur les systèmes d'exploitations les plus répandus ; -> Superviser via le protocole SNMP, notamment pour des équipements réseaux (switchs, firewall) ; 4
->limitation de la visibilité, les utilisateurs peuvent avoir un accès limité à quelques éléments, etc... 3. Les agents et les protocoles: Nagios offre plusieurs manière pour administrer les diffèrent équipements réseaux pour cela il a besoin de certain protocoles et plugin que l on doit parfois télécharger et installer séparément de Nagios. Afin de rendre plus exploitable les résultats, une interface web (nous utiliserons apache) basée sur les CGI fournis par l installation par défaut de Nagios a été rajoutée. 3.1 Le protocole SNMP: C'est LE protocole pour la gestion de réseaux. Basée sur UDP (port 161), ce protocole de communication permet la remontée d'informations stockées dans la table MIB ("Management Information Base") des machines. SNMP se base sur une architecture client (Nagios) / serveur (la machine à surveiller). Il est donc nécessaire que vos machines soient compatibles SNMP. 3.2 Les plugins locaux: En standard, SNMP ne remonte que des informations systèmes basiques. Pour aller plus loin et surveiller des processus plus complexe, Nagios a mis en place un système de type plugins locaux. Un plugin local est un script localisé sur le serveur Nagios (stockés dans nagios/libexec/ ou /usr/lib/nagios/plugins sous Linux, c'est pour cela que l'on dit qu'il est local). 5
Ce script, lancé à la demande de Nagios, doit retourner un code dont la signification est la suivante: Code 0: OK - Tout va bien Code 1: WARNING - Alerte Code 2: CRITICAL - Alerte critique Code 3: UNKNOWN - Problème lors de l'exécution du plugin 3.3 NRPE et NCSA: Le principe de fonctionnement des agents nrpe (nagios remote plugin executor) est simple : les plugins sont installés sur l'équipement à superviser. Sur la plateforme de supervision Nagios, le plugin check_nrpe fera alors office de client nrpe, récupérant les informations sur l'équipement concerné. Le plugin check_nrpe sur le serveur Nagios initiera une connexion vers l'agent nrpe de la machine cible et lui demandera alors l'exécution d'une vérification. L'agent nrpe lancera alors le plugin configuré en local pour obtenir l'information et retournera le code retour de l'exécution ainsi que sa sortie standard. Les agents ncsa (nagios service check acceptor) diffèrent des agents nrpe car la vérification est planifiée en local sur l'équipement supervisé, exécutée, puis le résultat est envoyé au serveur Nagios. De même que pour nrpe, l'architecture ncsa demande la présence du plugin check_ncsa sur la plateforme Nagios. 3.4 NSCLIENT: Les plugins NRPE et NSCA ne sont disponibles que pour Linux et Mac OS X. Si on souhaite surveiller des machines sous Windows il va falloir utiliser le plugin NSClient. 4. Centreon: interface web pour Nagios Centreon fournit une interface de visualisation de la supervision différente de celle de Nagios. Elle permet de rendre la consultation plus accessible à moyen de filtres de recherche, des graphes de métrologie, de reporting, d'une meilleure gestion des ACLs. Cette interface à l'avantage d'être plus dédiée à des personnes recherchant moins d'informations techniques, cependant elle ne remplace pas totalement l'interface de Nagios, les fonctionnalités proposées : -> une interface multiutilisateurs intuitive et personnalisable ; 6
-> une gestion de l'ensemble des fichiers de configuration de Nagios (cgi, nagios.cfg...) ; -> des fiches d'identités serveurs/équipements réseaux regroupant les informations de base sur ces types de ressource ->des représentations graphiques élaborées et personnalisables sur la métrologie ; -> une gestion des accès très fine, comprenant les ressources comme les pages de l'interface ; ->un compte-rendu complet sur les incidents ; -> un système de calcul de la qualité de service en temps réel avec alerte en cas de diminution de la qualité de service, etc... 5. Cacti: cartographie avancée (géographique, fonctionnelle, par services...) Cacti est un générateur de graphiques, principalement utilisé pour disposer de graphes statistiques du trafic réseau. Il enregistre toutes les informations nécessaires pour créer des graphes et les implémenter avec des données dans la base MySQL. Cacti supporte également le protocole SNMP pour les graphiques créés avec MRTG. Il permet de créer des vues «métiers» de la supervision. 6. Ndoutils: Ndoutils est un addon pour Nagios. Il permet de stocker dans une base de données Mysql ou dans un fichier plat : -La configuration des serveurs supervisés -Les évènements -Les états des éléments supervisés IV. Déploiement et installation: Nagios, en tant que bonne solution de supervision peut être déployée d'une manière centralisée c'est à dire que toute la supervision se fait à l aide d une seule machine et dans le cadre de cet atelier nous procèderons par cette installation standalone (Nagios, Centreon, base de données sur un même serveur) 1 Installation des outils : 7
1 ère étape : Installation de Nagios et de ses plugins: nagios@ubuntu:~$ sudo -s nagios@ubuntu:~# cd /usr/src nagios@ubuntu:~# wget http://prdownloads.sourceforge.net/ sourceforge/ nagios/nagios-3.4.1.tar.gz nagios@ubuntu:~# wgethttp://prdownloads.sourceforge.net/sourceforge/ nagiosplug/nagios-plugins-1.4.16.tar.gz //décompresser les sources nagios@ubuntu:~# tar xzf nagios-3.5.1.tar.gz nagios@ubuntu:~# cd nagios // lancer la compilation nagios@ubuntu:~/nagios#./configure --with-nagios-user=nagios --with-nagios-group=nagios --withcommand-user=nagios --with-command-group=nagios --enable-event-broker --enable-nanosleep -- enable-embedded-perl --with-perlcache nagios@ubuntu:~/nagios# make all nagios@ubuntu:~/nagios# make fullinstall nagios@ubuntu:~/nagios# make install-config // installation du script de démarrage nagios@ubuntu:~# ln -s /etc/init.d/nagios /etc/rcs.d/s99nagios //installation de l'interface web nagios@ubuntu:~# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin nagios@ubuntu:~# /etc/init.d/apache2 reload // COMPILATION DES PLUGINS nagios@ubuntu:~# sudo apt-get install fping libnet-snmp-perl libldap-dev libmysqlclient-dev libgnutlsdev libradiusclient-ng-dev nagios@ubuntu:~# cd /usr/src nagios@ubuntu:~/usr/src# tar xzf nagios-plugins-1.4.16.tar.gz nagios@ubuntu:~/usr/src# cd nagios-plugins-1.4.16 8
nagios@ubuntu:~ nagios-plugins-1.4.16#./configure --with-nagios-user=nagios --with-nagiosgroup=nagios nagios@ubuntu:~ nagios-plugins-1.4.16#make nagios@ubuntu:~ nagios-plugins-1.4.16#make install //tester les fichiers de configuration nagios@ubuntu:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //lancer le serveur Nagios nagios@ubuntu:~# /etc/init.d/nagios start On lance un navigateur Web sur un PC de notre réseau et on saisit l'url: l'interface de Nagios : En cliquant sur le lien "Hostgroup Overview", nous pouvons voir la supervision de notre serveur: En cliquant sur localhost on peut voir le détail des services supervisés : 9
2 ème étape : installation de Ndoutils: Rq: il faut faire attention à la ligne suivant qui s'écrit sur une seule ligne broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg 10
Pour automatiser le lancement de NDO au démarrage du serveur, il faut ajouter dans le fichier /etc/init.d/ndo2db le script dans le lien suivant: http://www.nicolargo.com/blogdata/ndo2db 11
3 ème étape : installation de Centreon 12
On modifie la base de donnée NDO pour qu'elle fonctionne de manière optimisée avec Centreon: 13
On peut maintenant se rendre à l URL suivante pour finaliser l installation par l interface Web: 14
15
16
17
Il faut maintenant configurer Centreon pour qu il puisse se connecter avec la base de données NDO. 18
Pour cela, il faut aller dans le menu Configuration/Centreon, puis cliquer sur le lien ndo2db.cfg dans le menu de gauche et cliquer sur le lien Principal. Saisir la configuration suivante dans l onglet General (Socket type: Unix et fichier socket /usr/local/nagios/var/ndo.sock): Socket type: unix Socket name: /usr/local/nagios/var/ndo.sock Modifier le login/password pour l accès à la base de donnée NDO (ndouser/ndopassword): il faut ensuite aller dans le menu Configuration/Centreon, puis cliquer sur le lien ndomod.cfg dans le menu de gauche et cliquer sur le lien Principal. Socket type: unixsocket 19
Output: /usr/local/nagios/var/ndo.sock Buffer File: /usr/local/nagios/var/ndomod.tmp En revenant à la page principale: En allant dans le menu Monitoring / Hosts Groups Summary vous devriez trouvez la supervision de votre serveur Nagios (défini par défaut lors de l installation de Nagios), ainsi que les 8 services définis: 4 ème étape : Exportation d une configuration Centreon vers Nagios Quand un host/service est créé dans l'interface de Centreon (menu configuration / Hosts / Add), il faut ensuite exporter cette nouvelle configuration pour qu'elle soit prise en compte par Nagios et donc affiché dans l'interface de supervision de Centreon. 20
Cette action est a répéter a chaque fois que vous souhaitez ajouter une configuration depuis Centreon vers Nagios. Pour vérifier que tout ce passe bien à ce niveau, il faut se rendre dans le menu Monitoring / Event logs et vérifier qu'il n'y a pas d'erreur au niveau ndomod: 5 ème étape : installation de Cacti Les paramètres de la base de donnée dédiée à Cacti sont stockés dans le fichier /etc/cacti/debian.php: sur l'interface web de cacti : commencer l'installation 21
Une bannière d'authentification devrait apparaître. Le login/password par défaut est admin/admin. Il faut maintenant configurer le logiciel. On va dans le menu Configuration Setting/Poller puis on sélectionne Spine comme type de polling. 6 éme Intégration de cacti dans Nagios: Le but est d ajouter automatiquement un lien vers Cacti depuis l interface Web de Nagios. Il suffit donc juste de cliquer sur un bouton ( ) pour être redirigé automatiquement vers la page correspondante au host en question dans Cacti. Nous allons pour cela utiliser un script PHP téléchargeable nommé CactiPlug Ensuite il faut configurer Nagios pour qu il prenne en compte le plugin. Dans le template generic_host du fichier template.cfg: 22
ou bien sous centreon : Action URL: /nagios/cactiplug/cactiplug.php?ip=$hostaddress Redémarrer nagios : # sudo /etc/init.d/nagios restart 23
figure:exemples de graphes réalisés par cacti V. Architecture réseau : Ceci est un schéma approximatif de notre réseau: Machines hôtes à supervisées Figure : architecture centralisée avec Nagios Voici les questions qu il faut se poser pour une bonne étude des besoins: 24
->Quel élément superviser? -> Quel service doit être surveillé? -> Qui va recevoir les mails? ->Qui va utiliser la plate-forme et donc la modifier? Et quelques conseils très utiles: ->Répertoriez tous les éléments à superviser (nom et adresse IP). ->Identifiez les services critiques et associez-les aux éléments. ->Établissez une politique de remonté d alarme cohérente (définissez des contacts et des groupes de contact) -> Établissez un schéma réseau détaillant les dépendances des éléments VI. Configurations: 1.Fichiers de Configuration : -> Répertoires importants: /etc/nagios : répertoire contenant les fichiers de configuration /usr/lib/nagios: répertoire contenant les fichiers CGI et plugins de Nagios /usr/share/nagios: répertoire contenant les fichiers de l'interface web de supervision -> Sous /etc/nagios: (configuration des objets ). etc/nagios/objects/ : C est dans ce sous-répertoire que sont centralisées les définitions des machines et services à surveiller part votre serveur Nagios..objects/commands.cfg : définition des commandes utilisées par Nagios pour interroger vos machines.. objects/contacts.cfg : configuration des contacts pouvant être prévenu en cas d'alerte.. objects/hostclients.cfg : Ce fichier est à créer, il comportera la définition de toutes vos machines clients à surveiller (c'est à dire les postes utilisateurs). Ce fichier n'existe pas dans la structure de base de Nagios 25
. objects/hostservers.cfg : Ce fichier est à créer, il comportera la définition de toutes vos machines serveurs à surveiller (c'est à dire les serveurs Web, DNS, DB...). Ce fichier n'existe pas dans la structure de base de Nagios. objects/network.cfg : Ce fichier est à créer, il comporte la définition de toutes les machines composant l'infrastructure de votre réseau (routeurs, switchs ou hub, borne Wifi...) 2. Définition des contacts: C est dans un fichier contacts.cfg que l on définit le contact. Une fois définis les contacts doivent être affecté à des groupes de contacts et par la suite à des services ou à des hôtes particuliers. Rq: un modèle de contact (template) se trouve sous /etc/nagios/objects/ templates.cfg 3.Configuration des hôtes et des services à surveiller: -> Machines Windows: Le monitoring d une machine Windows est impossible sans l installation un agent sur notre hôte (NSClient++ ) qui va se comporter comme un proxy entre Nagios et le client Windows. 1. On modifie le fichier de configuration principal de Nagios. # vi /etc/nagios/nagios.cfg On supprime le caractère (#) de la ligne suivante dans le fichier de configuration principal: #cfg_file=/usr/local/nagios/etc/objects/windows.cfg Et on enregistre le fichier puis on quitte. 26
2. On installe l'agent NSClient++ sur la machine windows à surveiller : ( dans cette étape vous devez indiquer l' adresse IP du serveur nagios ainsi que votre mot de passe (optionnel) ) 3. Il faut maintenant ajouter la définition du nouvel hôte au fichier /etc/nagios/objects/windows.cfg, si c est notre toute première machine à superviser,sinon il suffit de modifier le modelé déjà présent d'hôte dans windows.cfg : changer le host_name, l alias, et les champs d'adresse avec les valeurs appropriées pour la machine Windows. 27
il faut maintenant indiquer à Nagios les services à superviser pour cet hôte( les modifications sont apportées sur le même fichier.) Voici quelque exemple de définition de service : => permettre le contrôle de l'utilisation du processeur et générer une alerte CRITICAL si la charge du CPU et à 90% de ca capacité maximale pendant 5 minutes ou plus et une alerte WARNING si elle est à 80% ou plus. => permettre la surveillance de l'état du service W3SVC «IIS World Wide Web Publishing Service»sur la machine Windows et générer une alerte CRITICAL si le service est arrêté. Après avoir ajouté les services de base qui devraient être surveillés dans sur l hôte Windows, enregistrez le fichier de configuration et quittez. Rq: Comme en a spécifier un mot de passe lord de l installation de NSClient++ sur la machine Windows, on a donc besoin de modifier la définition de la commande check_nt pour inclure le mot de passe. On uuvre le fichier commands.cfg pour l'édition. 28
# vi /etc/nagios/objects/commands.cfg On modifie la définition de la commande check_nt pour inclure l argument - s<password> (dans notre coas le mot de passe est «taherbs») comme ceci: 4. Redémarrer nagios : # service nagios restart -> Machines Linux: ->Pour s assurer de la bonne installation et configuration du plugin on peut vérifier que la définition du de ce dernier est bien présente dans le fichier de configuration des commandes /etc/nagios/object/commands.cfg: 1. Installer le daemon NRPE et les plugins Nagios sur la machine linux à superviser (qui vont être lancés localement par le daemon NRPE): #sudo yum install nrpe #sudo yum install nagios-plugins-all 29
2. Modifier la ligne suivante dans nrpe.cfg: 3. On automatise le lancement du daemon au démarrage du serveur avec la commande: #chkconfig --add nrpe 4. Autoriser le Firewall à laisser passer les requêtes NRPE: 5.lancer le daemon : #service nrpe start 6. Sur le serveur nagios : créer un nouveau fichier de configuration pour cette machine qui intègrera la définition de la machine hôte et les service à surveiller (comme pour le fichier windows.cfg ) #gedit /etc/nagios/objects/linuxserver.cfg 30
ajouter la ligne suivante au fichier de configuration principale de Nagios /etc/nagios/nagios.cfg # Service nagios restart VII. Conclusion: Un logiciel de supervision de réseau comme Nagios est indispensable pour un administrateur lorsque le réseau devient complexe. Cela lui permet d'avoir une vue globale et en temps réel sur tout le parc informatique. Mais cela nécessite une configuration qui devient elle aussi assez complexe en fonction du niveau de supervision que l'administrateur souhaite mettre en place. En effet, dans Nagios, il n'y a pas d'outils de simplification de la configuration, toute les modifications (ajout, suppressions, modifications d hôte ou de service) s effectue manuelle ses fichiers de configuration. N est en moins il existe des solutions pour remédier à ça, et la répense été Centreon qui s'installe par-dessus Nagios et qui permet, grâce à son interface graphique, de visualiser l'état du réseau à la manière de Nagios, mais également de tout configurer en mode graphique. 31
->Centreon agit comme un intermédiaire entre l'administrateur et les fichiers de configuration de Nagios. Il enregistre dans une base de données les configurations effectuées par l'administrateur, puis il modifie les fichiers de configuration de Nagios en fonction du contenu de la base de données. Il ne faut pas croire que l'installation et la configuration de cette solution de supervision soit aisée à mettre en place sur tout au sein des entreprises de taille importante, même avec l'aide de Centreon et surtout il faut sans cesse adapter les configurations en fonction de l'évolution du parc informatique et du cahier des charges de cette solution 32