Nagios

From AleikoumWiki

(Difference between revisions)
Jump to: navigation, search
m
m
Line 103: Line 103:
==== Configurer SNMPD ====
==== Configurer SNMPD ====
 +
 +
Pour repondre aux requetes, il faut bien entendu un serveur. Les questions arrivent a ce serveur et hop ce dernier repond (principe classique de client-serveur).<br />
 +
Pour SNMP le serveur se nomme (attention surprise...) snmpd !<br />
 +
Voici un fichier de conf (/etc/snmp/snmpd.conf) que j'ai pu utiliser lors de mes tests :
 +
 +
<pre>
 +
#/etc/snmp/snmpd.conf
 +
com2sec LocalNet 127.0.0.1 public
 +
com2sec Mynetwork 192.168.0.0/24 public
 +
group ROGroup v1 LocalNet
 +
group ROGroup v1 Mynetwork
 +
view tout included .1
 +
access ROGroup "" v1 noauth exact tout none none
 +
</pre>
 +
 +
C
 +
 +
Ensuite pour le script de demarrage du service, j'utilise le script suivant : [http://aleikoum.net/data/nagios/snmpd/snmpd|snmpd]

Revision as of 14:23, 30 January 2008

Retour d'experience, howtos, scripts supplementaires, philosophie autour du meilleur logiciel de supervision OpenSource : Nagios !


Contents

L'Approche

Qu'est ce ?

Nagios est L'OUTIL de supervision OpenSource Linux ! Il repose entièrement sur le moteur NetSaint, un ancien système de monitoring. La première version de Nagios est parue en Mai 2002 et a été entièrement conçue par Ethan Galstad. Nagios offre les services suivants :

  • Surveillance des services réseaux (SMTP, POP3, HTTP, NNTP, PING, etc.)
  • Surveillance des ressources des hôtes (charge processeur, utilisation des disques, etc.)
  • Système simple de plug-ins permettant aux utilisateurs de développer facilement leurs propres vérifications de services.
  • Parallélisation de la vérifications des services.
  • Possibilité de définir la hiérarchie du réseau en utilisant des hôtes "parents", ce qui permet la détection et la distinction entre les hôtes qui sont à l'arrêt et ceux qui sont injoignables.
  • Notifications des contacts quand un hôte ou un service a un problème (via e-mail, pager, ou par une méthode définie par l'utilisateur)
  • Possibilité de définir des gestionnaires d'évènements qui s'exécutent pour des évènements sur des hôtes ou des services, pour une résolution des problèmes pro-active
  • Rotation automatique des fichiers log
  • Support pour l'implémentation de la surveillance des hôtes de manière redondante
  • Interface web, pour voir l'état actuel du réseau, notification et historique des problèmes, fichiers log, etc.

Nagios s'appuie sur un serveur Web (qui est un des pré requis) et des scripts CGIs qui permettent de représenter les analyses, les états des services ou des hôtes, les informations des notifications, les logs, la configuration... Son fonctionnement repose sur plusieurs fichiers de configuration qui regroupent les définitions des tests, des politiques, des contacts, des hôtes, etc... Bref plein de choses !

Voici une presentation que vous pouvez retrouver dans la documentation officielle de Nagios :

Nagios® is a system and network monitoring application. It watches hosts and services that you specify, 
alerting you when things go bad and when they get better.
Nagios was originally designed to run under Linux, although it should work under most other unices as well. 

The only requirement of running Nagios is a machine running Linux (or UNIX variant) and a C compiler. 
You will probably also want to have TCP/IP configured, as most service checks will be performed over the network.

You are not required to use the CGIs included with Nagios. However, if you do decide to use them, you will 
need to have the following software installed...

   1. A web server (preferrably Apache)
   2. Thomas Boutell's gd library version 1.6.3 or higher (required by the statusmap and trends CGIs) 

Nagios is licensed under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation. 
This gives you legal permission to copy, distribute and/or modify Nagios under certain conditions. 
Read the 'LICENSE' file in the Nagios distribution or read the online version of the license for more details.

Pourquoi lui ?

La premiere fois que j'ai du mettre en place un Nagios de production, j'avais le cahier des charges suivants :

  • la solution doit être en mesure d'offrir au moins les mêmes services que la solution actuellement déployée : BigBrother,
  • permettre une meilleure réactivité vis à vis d'un problème, on parlera même de pro-activité dans le sens où l'administrateur doit pouvoir être averti des problèmes avant même que l'utilisateur ne s'en rende compte afin d'assurer un rétablissement plus rapide de la situation,
  • permettre une politique de notifications complètes et entièrement paramètrables,
  • assurer une bonne gestion des logs et historiques avec possibilité de les sauvegarder en base de données,
  • possibilité de faire du polling SNMP en particulier pour contrôler les débits d'échange de données au niveau de routeurs/switchs par exemple voire même d'un hôte,
  • permettre la représentation graphique des données récoltées,
  • et être gratuit !!!


De nombreux produits pour la supervision existent sur le marché : Tivoli d'IBM, OVO et NNM d'HP, Patrol de BMC, COABA d'Alcove ou encore Ganglia développé par l'université de Berkeley. Cependant parmi toutes ces solutions aucune ne répond entièrement aux besoins cités plus haut :

  • Les solutions proposées par Alcove, IBM, HP ou Patrol sont toutes payantes (compter près de 9 500 euros pour la solution la moins chère).
  • La solution Ganglia ne permet pas de gérer les notifications et n'assure pas la gestion d'un historique temps réel.


Le choix s'est donc porté naturellement sur Nagios qui correspond parfaitement aux besoins... Surtout qu'on peut rajouter les avantages suivants : communaute importante et reactive (et meme en France !), l'outil est le plus souple du marche (car finalement il faut voir Nagios comme un ordonnanceur interpretant des resultats... on peut quasi tout faire pour peut qu'on puisse en faire un script :) ) .

Bref Nagios est vraiment a mon sens une solution ultime pour peu qu'on passe du temps a configurer l'outil comme il faut et a ecrire les plug-ins qui nous permettra de checker nos ressources (ca on l'expliquera apres !)

Liens

Mon super rapport de stage - Mise en place d'une solution de supervision - (attention 80/100 quand meme !) est dispo ici.

La Mise en Place

Les Prérequis

L'Installation

La Configuration

From me

Bon y a de tout et de rien ! Mais certaines choses peuvent etre interessantes...

Rapports Email

J'ai ecrit une suite de petits scripts qui permettent de generer et envoyer des rapports mails avec des graphs.
Ces scripts se basent sur l'outil Nagiosgraph, et plus particulierement sur une petite modification du show.cgi, pour generer ces graphs.Ils sont ecrits en perl et peuvent tres facilement etre utilise en cron pour des rapports quotidien.
De plus j'ai cree deux petits CGIs (tjrs en perl) permettant de generer des rapports graphs a la volee via l'interface web !

Voici un exemple de mail que je recois tout les jours.

Comme les choses sont (mouhahaha) bien faites, voici le README ! Tout est explique et detaille (comment appeller les scripts, la ou les installer, les modules en plus necessaires...)

Et le reste des scripts se trouvent ici


Howto SNMP

Ah ce bon vieux protocole SNMP !
Grace a ce protocole vous allez etre capable d'interroger les MIBs (on va voir ce que c'est !) des equipements reseaux (switch, routeur ou meme machine) avec beaucoup d'aisance !
Je vais tenter de presenter quelques aspects qui vont surement vous etre tres utiles.

Configurer SNMPD

Pour repondre aux requetes, il faut bien entendu un serveur. Les questions arrivent a ce serveur et hop ce dernier repond (principe classique de client-serveur).
Pour SNMP le serveur se nomme (attention surprise...) snmpd !
Voici un fichier de conf (/etc/snmp/snmpd.conf) que j'ai pu utiliser lors de mes tests :

#/etc/snmp/snmpd.conf
com2sec LocalNet    127.0.0.1           public
com2sec Mynetwork   192.168.0.0/24      public
group   ROGroup     v1             LocalNet
group   ROGroup     v1             Mynetwork
view    tout        included      .1
access  ROGroup     ""       v1          noauth      exact   tout    none     none

C

Ensuite pour le script de demarrage du service, j'utilise le script suivant : [1]


Les MIBs ? c'est quoi ?

Exemple d'utilisation

Boucle NSCA

Plugins Perl

Personal tools