Nagios™ (anciennement appelé Netsaint) est une application permettant la surveillance système et réseau. Elle surveille les hôtes et services spécifiés, alertant lorsque les systèmes vont mal et quand ils vont mieux. C'est un logiciel libre sous licence GPL.
Vous souhaitez surveiller votre infrastructure ? Réseau et/ou serveur ? Vous avez besoin de faire remonter des alertes en cas de soucis ? Nagios et LA solution de supervision open source. Vous en avez rêvé, Nagios l'a fait !
L'installation à partir des sources est décrite ici : http://blog.nicolargo.com/2009/01/le-serveur-de-supervision-libre-part-2.html
C'est lourd, long, chiant, mais vous aurez la dernière version. Autant vous le dire tout de suite, pour Nagios lui-même, cela ne sert à rien pas grand chose. Les packages Debian sont très bien. Par contre, si vous voulez la dernière version de certains outils, comme NagVis (on y viendra plus tard), alors peut être, lancez-vous (quoique, on verra qu'on peut tricher et rester sur les paquets).
Voilà vous êtes prévenus, mais j'aime bien les paquets, c'est plus simple à maintenir, mais chacun ses goûts.
Pour la culture générale : http://fr.wikipedia.org/wiki/Nagios
Et l'excellent blog de Nico, qui traite très souvent de Nagios et ses plugins : http://blog.nicolargo.com
Première étape, être en root (su, ou si vous avez sudo, sudo -s).
# aptitude install nagios3
Pour avoir encore plus de possibilités, on va ajouter :
# aptitude install nagiosgrapher ndoutils-nagios3-mysql nagios3-dbg nagios-nrpe-plugin
Eh oui, ça en fait du paquet !
Avant d'aller plus loin, il faut protéger l'accès à Nagios (sinon vous aurez une erreur 500 de toute façon !).
Allez dans le répertoire de nagios, c'est à dire là :
# cd /etc/nagios3/
Puis, on fabrique l'utilisateur et le mot de passe pour l'utilisateur qui souhaite accéder à l'interface de Nagios :
# htpasswd -c htpasswd.users nagiosadmin
À présent, faites un tour sur le serveur, http://ip_serveur_nagios/nagios3/
Vous y voilà !
La seule chose de surveillée à présent, est votre serveur de supervision, localhost en l'occurence. Commencez à regarder un peu l'interface, sur le menu de droite : Tactical Interface, Service Details, Host details etc.
Avant d'ajouter un host, nous allons déjà permettre aux commandes externes de s'executer. Une commande externe est en faite une action réalisée sur l'interface Web de Nagios : un commentaire sur un Host (Un message de Toto le technicien à 23h32 par exemple : "C'est down mais je suis parti réparer" par exemple, pourra éviter à Joe l'admin de se déplacer pour rien). Pour se faire, il faut modifier le fichier de configuration principal de Nagios. Sous Debian Lenny, il se trouve ici :
# nano /etc/nagios3/nagios.cfg
Notez que j'utilise nano, mais vi ou emacs irait tout aussi bien ;)
La zone qui nous intéresse, toujours bien commentée :
# Values: 0 = disable commands, 1 = enable commands check_external_commands=1
Achtung ! Un vilain bug empêche les commandes externes de fonctionner, il faut faire en plus la manip suivante pour que cela fonctionne :
# /etc/init.d/nagios3 stop # dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw # dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 # /etc/init.d/nagios3 restart
C'est dit !
Pour tester le fonctionnement des commandes externes, essayer de mettre un commentaire sur votre localhost (tout en bas, lorsque vous l'avez sélectionné).
Pour bien comprendre comment fonctionne Nagios, il faut déjà être au clair dans sa tête :
Petit nuance sur le service PING : il est possible d'affecter à tous ses hosts, le service PING. A quoi cela sert-il, puisque Nagios teste déjà sur l'hôte est UP ou DOWN. Eh bien, cela sert à alerter en fonction de seuils : par exemple, si le ping passe au delà de 100ms, j'émets une alerte, et au delà je déclare cela critique. De cette manière, vous pouvez régler finement les différentes alertes. Donc je vous conseil (et on verra comment), d'affecter au moins un service à tous vos hosts : le service PING. Notons que c'est un service réseau "universel", et que même une imprimante, routeur ou switch digne de ce nom répondra ! Enfin, Nagios n'aime pas trop monitorer un Host sans service, donc vous savez ce qu'il vous reste à faire ! (lire la suite ;) )
Pour être plus clair : Vous avez configuré un Service de vérification de base de donnée (une requête de test SQL par exemple) et vous avez configuré ce service pour qu'il vérifie toutes les machines qui sont dans ce groupe. Or, comme vous possédez 30 serveurs, donc 10 font de la base de donnée (entre autre), vous préciserez que ces 10 serveurs sont dans le groupe "Database Servers".
Et hop ! Nagios surveillera les bases de données de ces 10 serveurs. Bien entendu, une machine peut être dans plusieurs groupes : "Database Server", "Ping host" (un groupe qui sera vérifié par le service ping), "HTTP" (test de requête HTTP) etc.
On comprend donc l'intérêt ! Cela peut être un peu fastidieu au départ de créer autant de groupe que de "service", mais cela apporte beaucoup de souplesse, puisque une machine peut être ajouté/supprimé d'un groupe aisément.