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.

nrpe-shinken

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.

nsclient_config_windows

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 ».

nsclient_auto_service

Le service sera à redémarrer après chaque modification de la configuration de l’agent. Celle ci se trouve sous C:\Program Files\NSClient++\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 ».

authorisation_nsclient

II. Configuration de Shinken

On va dans un premier temps tester la bonne connexion de notre agent en appelant directement le script check_nt.

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 :

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

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

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++

 Uptime de la machine

 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.

Charge mémoire

Un warning à 80% et une alerte à 90%.

Taux de remplissage du disque dur “C:”

-l c  : selection du lecteur à supervisiser

-w : seuil pour déclancher un warning

-c : seuil critique

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

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.

Le résultat est le suivant

shinken_result_windows

 

28 thoughts on “Supervision Windows avec Shinken 2”

  1. shagon dit :

    Bonjour, et avant tout merci pour ce tuto, j’ai néanmoins une question qui peut paraître bête mais où a-t-on le check_nt ?
    Personnellement j’ai reussi à l’avoir sur un plugin de nagios que j’ai dc copié dans ma libexec de shinken « /var/lib/shinken/libexec ».
    Par la suite de votre tuto, sur mon webUI j’ai l’erreur suivante : Warning: This plugin must be either run as root or setuid root. et après quelque recherche j’ai trouver une solution en changeant les droits mais cela n’a pas fonctionné, je n’arrête pas de chercher mais ne trouve rien pouvez vous m’aider ?

    1. Sispheor dit :

      Bonjour, de souvenir j’ai uniquement téléchargé les nagios plugins (http://www.nagios.org/download/plugins). Check_nt fait partie du package. Il est ensuite possible de préciser à Shinken dans l’un de ces fichier de conf ou se trouve ces derniers.

      1. shagon dit :

        Après avoir mis le check du package cela m’affiche la même erreur, Warning: This plugin must be either run as root or setuid root, et bien sûr j’ai remis les droits …

        1. Sispheor dit :

          chmod u+s sur check_nt ça donne quoi?

  2. shagon dit :

    Et bien j’ai une nouvelle erreur avec l’ancienne 🙂
    NSClient – ERROR: Invalid password. sur le Charge disque C, et tjrs pareil Warning: This plugin must be either run as root or setuid root.

    1. Sispheor dit :

      et avec un chown root:shinken également?

  3. shagon dit :

    Après redémarrage oui tjrs le mm warning :/

    1. Sispheor dit :

      Arf, il va falloir s’en remettre a Google car là je ne vois pas. Je n’ai pas rencontré cette erreur. Vous pouvez éventuellement essayer avec le paquet des dépôts si vous êtres sur une branche Debian. apt-get install nagios-plugins.

  4. Shagon dit :

    Bonjour suite à nos échanges j’avais reussi à faire des remontés de windows :/ maintenant j’ai voulu le faire passé en prod, bien que j’ai fait la mm install et procédure cela me marque une nouvelle erreur jamais vu jusque là « impossible d’obtenir l’information depuis le serveur »
    ./check_nt -H 192.168.0.xx -p 12489 -v CLIENTVERSION -s xxxxxxx

    1. Sispheor dit :

      Pas de par-feu? Il faut se méfier avec le par-feu intégré de Windows et bien spécifier la règle à la main pour être sur que le port est bien en écoute. Je préconise un test avec un telnet par exemple ou nmap dans un premier temps.

  5. Shagon dit :

    effectivement c’était bien cela mais je n’ai pas reussi à avoir des remontés et donc j’ai repris mes notes du test et me suis reinstallé les plugins nagios ( apt-get install nagios-plugins-basic ) et cela m’a installé les mm repertoires pour les commandes à savoir /usr/lib/nagios/plugins/check_nt
    j’ai donc refait votre tuto et quoi que je fasse j’ai Doing config check
    [warn] full result is in /tmp/shinken_checkconfig_result … (warning).
    [FAIL] ConfigCheck failed: Configuration is incorrect, sorry, I bail out … fai led!
    failed!
    A savoir je n’ai fait que du copié collé 🙂

    1. Sispheor dit :

      Méfiance avec le copié collé. Il arrive que l’on embarque un formatage pourrit. Pensez à faire un test de votre configuration avec la commande « /usr/bin/shinken-arbiter -v -c /etc/shinken/shinken.cfg ». Le test permet de savoir quelle est la conf qui ne va pas. Il faut aussi que le path des plugins nagios soit bien renseigné dans resource.d/paths.cfg.

  6. Shagon dit :

    pas de soucis avec « /usr/bin/shinken-arbiter -v -c /etc/shinken/shinken.cfg »

    # Nagios legacy macros
    $USER1$=$NAGIOSPLUGINSDIR$
    $NAGIOSPLUGINSDIR$=/usr/lib/nagios/plugins

    #– Location of the plugins for Shinken
    $PLUGINSDIR$=/var/lib/shinken/libexec

    j’ai laisser le tout par defaut :/
    dès que je mets le hostgroup tout deconne ^^

    1. Shagon dit :

      bon et bien note final 🙂 cela fonctionne à pas me demander pourquoi mais cela fonctionne ! 🙂

  7. jim dit :

    Bonsoir,

    plutôt NSClient++ ou alors par WMi checked ? Je l’ai fait par Wmi et ca me semble moins bien … As tu essayé les 2 possibilités ?

    Merci

    1. N.i.c.O dit :

      Uniquement NSClient++ en ce qui me concerne.

  8. jim dit :

    ok j’essaye avec NSClient++ pour voir sur d’autres serveurs que je n’ai pas encore ajoutés

  9. Mad_noob dit :

    Bonjour,

    Comment obtenez-vous l’affichage de vos hosts tel que dans la dernière capture ?

    J’utilise la webui2 et venant d’un vieux Nagios j’aimerai pour changer cela…

    Cela m’a fait penser au couple thruk + mk live status ?

    Merci par avance

    1. N.i.c.O dit :

      Mon billet date un peu. L’interface à probablement changée depuis. Mais sinon il s’agit de l’interface native de Shinken. Je vous recommande de voir mes autres billets sur le sujet au préalable.

  10. Mad_noob dit :

    Merci pour votre réponse.

    Effectivement l’interface est passée à la webui2. Je vais voir si ce n’est pas seulement qu’un temps d’adaptation pour cette nouvelle interface…

  11. Yassir kasdi dit :

    Bonjour, Merci bcp pour le tuto, moi je suis un débutant dans ce demain de monitoring, je travail maintenant dans un projet de gestion de parc informatique en utilisant GLPI + shinken. avant de tester ce tuto j’ai une question qui peut paraître bête !! est ce qu’on peut faire des check comme check_disk , check_load directement sur nos machines windows sans utiliser NSclient++ ou WMI ??

    1. N.i.c.O dit :

      Non je ne pense pas.

      1. Yassir kasdi dit :

        OK Merci bcp, Je vais suivre le tuto et je reviens vers toi 🙂

  12. Kouamzo dit :

    bonjour. Merci bien pour le tuto. c’est très intérressant. Mais j’ai un problème. j’ai suivi le tuto à la lettre mais a la fin je n’obtiens qu’un check sur le ping. je sais pas pourquoi ma machine cliente n’est pas bien intégré dans le host

    1. N.i.c.O dit :

      Je suis désolé je n’ai pas vraiment le temps pour du support. Je vous recommande de tester que le plugin répond bien avec snmpwalk par exemple, vérifier que aucuns par-feu bloquent la communication, checker les logs, etc..

  13. Kouamzo dit :

    Tout marche presque a merveille. Mais je crois que mon problème se situe ici « address serveur_windows.domain.local » . et les logs ne me disent pas quelque chose. svp si vous pouvez expliquer comment marche l’adresse de l’hote j’en serai ravi. merci

    1. N.i.c.O dit :

      Il faut remplacer serveur_windows.domain.local par l’IP du serveur cible bien entendu.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *