Supervision Windows avec Shinken 2
Dans ce billet on va superviser une machine Windows. Il existe 3 méthodes pour le faire. Le classique protocole SNMP, l’agent NRPE ou l’utilisation du système Microsoft Windows Management Instrumentation (WMI).
Ici on va configurer un agent NRPE. Le principe est que le serveur Shinken initie une connexion vers un processus distant, le processus appel la commande système demandée par Shinken et retourne le résultat avec le code de retour et la sortie standard.
I. Configuration du poste Windows
Télécharger et installer le client NSClient++ disponible ici.
Lors de l’installation, vous serez invité à saisir le mot de passe de connexion de l’agent ainsi que l’adresse du serveur Shinken. Gardez bien le mot de passe il sera nécessaire lors de la configuration du serveur Shinken. Petit conseil : pas de caractères spéciale genre “!” qui est un caractère d’échappement pour les fichiers de configurations de Shinken.
Cocher les cases suivantes :
- Enable common check plugins : active les plugins de base NRPE
- Enable nsclient server (check_nt) : obligatoire pour que les plugins check_nt fonctionne depuis Shinken
- Enable NRPE server (check_nrpe) : active le mode agent. Utilise pour faire des script de supervision perso.
- Enable WMI checks : comme je l’ai dis précédemment, ceci active le mode de supervision à la Mircrosoft.
Une fois installer, vous pouvez lancer le service. Pour cela on se rend dans le gestionnaire de service (services.msc) afin de vérifier que NSClient++ se trouve bien en état “démarré” et “automatique”.
Le service sera à redémarrer après chaque modification de la configuration de l’agent. Celle ci se trouve sous C:Program FilesNSClient++nsclient.
Un dernier détail afin de terminer la configuration. Pour plus de sécurité Windows désactive les accès et autorisations de connexion à distance. Pour vérifier, faite clique droit et propriété sur le service. Dans l’onglet connexion, cocher “Authoriser le service à interagir avec le Bureau”.
II. Configuration de Shinken
On va dans un premier temps tester la bonne connexion de notre agent en appelant directement le script check_nt.
1
|
/usr/lib/nagios/plugins/check_nt –H host.domain.local –p 12489 –v CLIENTVERSION –s password
|
Explication sur les options :
- -H : Nom ou adresse IP de l’hôte à interroger.
- -p : port. Par défaut 12489
- -s : Le mot de passe. Celui saisi à l’installation du client NSClient++
- -v : Variable à interroger
Ici, on demande la version de l’agent installé sur la machine. Le résultat doit ressembler à ça :
1
|
NSClient++ 0,4,1,105 2014–04–28
|
L’agent fonctionne. On va maintenant créer un commande Shinken qui utilise ce script. Pour cela on créé le fichier commands/check_nt.cfg et on y place les lignes suivantes
1
2
3
4
|
define command {
command_name check_nt ; Nom de la commande qui sera appelé
command_line $USER1$/check_nt –H $HOSTADDRESS$ –p 12489 –s password –v $ARG1$ $ARG2$ ; syntaxe ‘brute’ de la commande
}
|
La commande n’est que la forme syntaxique de l’appel que on avons effectué précédemment pour tester le script. La seule différence ce trouve dans l’ajout de l’arguments -v permettant de passer des paramètres supplémentaires. Chaque plugin requière un paramètre comme par exemple un seuil de criticité , le nom d’un service particulier ou une lettre de lecteur.
On passe ensuite à la création d’un groupe pour qui fera office de base pour tous les serveurs Windows. On créé donc le fichier hostgroups/windows_nrpe.cfg pour y placer les lignes suivantes
1
2
3
4
5
|
define hostgroup{
hostgroup_name windows_nrpe
alias Serveur Windows Via NSClient++
members serveur_windows
}
|
On va à présent rattacher des services à ce groupe. Chacun des serveurs Windows dans ce dernier se verra donc superviser par ces services. Vous pouvez les placer à la suite du fichier hostgroups pour une meilleur lisibilité ou créer un nouveau fichier de configuration.
Afficher la version de l’agent NSClient++
1
2
3
4
5
6
|
define service {
service_description Check version NS Client ; Description de la commande
hostgroup_name windows_nrpe ; Nom du groupe sur lequel la commande sera exécutée
use generic–service ; Utilisation du template générique
check_command check_nt!CLIENTVERSION ; Commande à effectuer
}
|
Uptime de la machine
1
2
3
4
5
6
|
define service {
service_description Uptime
hostgroup_name windows_nrpe
use generic–service
check_command check_nt!UPTIME
}
|
Charge CPU
Avec une interrogation qui permet un mode de calcul assez proche de celui observé sur machine Linux/Unix, soit une moyenne sur la dernière minute, les 5 et les 15 dernières minutes. Les seuils d’avertissement (90) et critique (95) sont précisés pour chacune des valeurs interrogées.
1
2
3
4
5
6
|
define service {
service_description CPU load
hostgroup_name windows_nrpe
use generic–service
check_command check_nt!CPULOAD!–l 1,90,95,5,90,95,15,90,95 ; Comme linux
}
|
Charge mémoire
Un warning à 80% et une alerte à 90%.
1
2
3
4
5
6
|
define service {
service_description RAM load
hostgroup_name windows_nrpe
use generic–service
check_command check_nt!MEMUSE!–w 80 –c 90
}
|
Taux de remplissage du disque dur “C:”
-l c : selection du lecteur à supervisiser
-w : seuil pour déclancher un warning
-c : seuil critique
1
2
3
4
5
6
|
define service {
service_description Charge disque C
hostgroup_name windows_nrpe
use generic–service
check_command check_nt!USEDDISKSPACE!–l c –w 80 –c 90
}
|
Les services de base sont configurés. On va pour terminer créer une machine qui appartiendra au groupe windows_nrpe. Création du fichier /etc/shinken/hosts/serveur_windows_test.cfg
1
2
3
4
5
|
define host{
use generic–host
host_name serveur_windows
address serveur_windows.domain.local
}
|
Editer le fichier hostgroups/windows_nrpe.cfg pour ajouter cette machine en tant que membre.
Finalement, relancer l’Arbiter de Shinken pour prendre en compte les changements.
1
|
/etc/init.d/shinken–arbiter restart
|
Le résultat est le suivant