Nagios

Surveillance système et réseau : explications

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.

Introduction

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 !

Package VS Sources

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

Installation de Nagios

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à !

Premiers (petits) pas

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é).

Principe de l'host/service/group

Pour bien comprendre comment fonctionne Nagios, il faut déjà être au clair dans sa tête :

  • Une machine, ou Host : Nagios va essayer tout seul de vérifier sur l'Host que vous allez créer est "UP". C'est la base. Cela vous permet d'avoir dans la vue Host Detail un résumé de vos machines joignables (autrement dit, qui ne sont pas éteintes, ni sur un lien réseau HS).
  • Un service : Un service est ce que peut fournir un Host (pour un serveur c'est logique de fournir un service !). Exemple concret : une base de donnée Mysql, fourni par l'Host "Serveur1". "Serveur1" peut très bien être allumé (donc visible dans la liste des hosts), mais Mysql pourrait avoir flanché, ou ne pas avoir démarré (faute d'espace disque, ou tout autre éventualité). Donc surveiller uniquement un host ne sert pas à grand chose. C'est pour cela qu'on surveille directement les services. Pour le cas mysql, on peut soit faire une requête SQL, ou simple faire un "check TCP" sur le port mysql : s'il répond, c'est que le démon MySQL fonctionne ! Une machine peut avoir plein de services, et l'intérêt de Nagios c'est de tout pouvoir tester.

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 ;) )

  • Un Groupe : Pour vous faciliter la vie, vous pouvez créer des groupes d'Hosts. Chaque groupe possède un nom (ex : "Database Servers") et la liste des Hosts qui sont dans ce groupe. Par exemple, "Server1" qui possède Mysql d'installé, sera dans le groupe "Database Servers". A quoi ça sert ? Eh bien, quand nous verrons comment configurer un service, nous verrons que nous pouvons lui affecter un groupe.

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.

nagios.txt · Dernière modification: 2009/07/21 16:51 par plam
Haut de page
CC Attribution-Noncommercial-Share Alike 3.0 Unported chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0