Surveiller vos serveurs Windows avec Nagios

Date: 11/10/2007 | Catégories: Open-source,Reseau | Tags: ,,,,

Dans la longue série des billets sur Nagios, en voici un tout spécialement dédié aux lecteurs qui ont à administrer des machines sous Windows. Nous allons décrire l'installation de NSClient, un plugin permettant de récupérer un nombre important de d'informations à surveiller sur une machine Windows.

Comme les plugins NRPE et NSCA (disponible seulement sous Linux et Mac OS X), NSClient se base sur une architecture client/serveur. La partie cliente (nommée check_nt), doit être disponible sur le serveur Nagios. La partie serveur (NSClient++) est à installer sur chacune des machines Windows à surveiller.

Installation de check_nt

Il y a de forte chance que le plugin check_nt soit installé par défaut sur votre serveur Nagios. Pour le vérifier, il faut se rendre dans le répertoire Nagios ou se trouve vos plugins (/usr/lib/nagios/plugins sur Fedora).

# cd /usr/lib/nagios/plugins
# ls check_nt
check_nt

Si ce n'est pas le cas, il suffit de l'installer grâce aux commandes suivantes:

Fedora:
# sudo yum install nagios-plugins-nt

Ubuntu:
# sudo apt-get install nagios-plugins-nt

Installation de NSClient++

Remarque: cette opération est à faire sur l'ensemble des PC Windows à surveiller.

La première chose à faire est de télécharger la dernière version (0.2.5e ou supérieure) à l'adresse suivante: Sourceforge de NSClient++.

Ensuite il faut:

  • "dézipper" le client dans le répertoire c:\nsclient
  • ouvrir une commande DOS (cmd.exe)
  • puis entrer les commandes suivantes:
    • cd \nsclient
    • nsclient++ /install
  • Ouvrir le gestionnaire des services et vérifier que le service est autorisé à "Interagir avec le bureau"
  • Editer le fichier c:\nsclient\NSC.INI en:
    • décommentant tous les modules listé dans la section [modules] sauf CheckWMI.dll et RemoteConfiguration.dll
    • décommentant la ligne allowed_hosts dans la section [Settings] et en y ajoutant l'adresse du serveur Nagios.
  • puis entrer les commandes suivantes dans votre fenêtres DOS:
    • cd \nsclient
    • nsclient++ /start

Pour tester que l'installation à bien marché, le plus simple est de faire un test depuis le serveur Nagios. Pour cela, il faut:

# cd /usr/lib/nagios/plugins

# ./check_nt -H IPMACHINEWINDOWS -v CLIENTVERSION -p  12489

Si tout ce passe bien, le client doit envoyer la version de NSClient (0.2.5e)

Si cela ne fonctionne pas, il faut peut être vérifier que la requête (TCP sur port 12489) n'est pas bloqué par un Firewall.

Configuration de Nagios pour surveiller vos machines Windows

Une fois le client et le serveur installé, il faut configurer Nagios de la manière suivantes. Il faut dans un premier temps éditer votre fichier de configuration des hosts (hosts.cfg par défaut) et y ajouter votre machine Windows:

define host {
use generic-host
host_name billgates
alias Ma machine Win
address 192.168.6.66
}

Puis ajouter les services offerts par NSClient (dans le fichier services.cfg):

# Affiche la version du NSClient
define service {
use generic-service
host_name billgates
service_description VERSION
check_command check_nt!CLIENTVERSION
}

# Temps écoulé depuis le dernier reboot (uptime)
define service {
use generic-service
host_name billgates
service_description UPTIME
check_command check_nt!UPTIME
}

# Charge CPU
# WARNING si charge > 80% pendant plus de 5 minutes
# CRITICAL si charge > 90% pendant plus de 5 minutes
define service {
use generic-service
host_name billgates
service_description CPU
check_command check_nt!CPULOAD!-l 5,80,90
}

# Etat de la mémoire vive libre
# WARNING si mémoire > 80%
# CRITICAL si mémoire > 90%
define service {
use generic-service
host_name billgates
service_description MEM
check_command check_nt!MEMUSE!-w 80 -c 90
}

# Etat de la mémoire disque libre (sur disque c:)
# WARNING si mémoire > 80%
# CRITICAL si mémoire > 90%
define service {
use generic-service
host_name billgates
service_description DISK
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}

Il est également possible de surveiller l'état d'un service (SERVICESTATE) ou d'un processus (PROCSTATE).