Supervision des quotas Windows (NRPE/VBS)

Hello, j’espère que tout le monde va bien et en bonne santé. Nous allons voir dans cet article la supervision des quotas Windows avec Centreon. Nous allons commencer par installer et configurer NSClient++ sous Windows.

Ce qu’il vous faut :

Télécharger NSClient++ : nsclient.org/download/

Mes quotas sous Windows Server 2019 :

Supervision Quotas Windows

IP du serveur : 192.168.1.24

Script VBS (Check_Folder_Size)

Télécharger le script VB et mettez-le dans un répertoire de votre choix.

Dans mon cas, le script se trouve dans : C:\Scripts\check_folder_size.vbs

Le script est également ici : exchange.nagios.org/…/Windows-NRPE/check_folder_size-2Evbs/

Remarque : il y a un petit correctif en commentaire que j’ai pris en compte ici.

Installation NSClient sous Windows

Commençons par l’installation de ce programme sur notre serveur Windows (ou client Windows).

  • Installer le programme par défaut :
  • Laisser Generic et cliquez sur Next

Installation NSClient++ Etape 1

  • Choisir le type d’installation : Typical

Installation NSClient++ Etape 2

  • Cochez les cases comme sur le screen ci-dessous.
    • Allowed hosts : 192.168.1.30 est l’adresse IP du serveur Centreon
    • Password : ajouter un mot de passe (peut être modifié facilement plus tard)

Installation NSClient++ Etape 3

  • Cliquez sur Next et laisser le reste par défaut.

Configuration NSClient++

Allez dans le fichier de configuration NSClient++. Par défaut, le fichier se trouve ici : C:\Program Files\NSClient++\nsclient.ini

Si vous utilisez déjà NSClient et que vous avez votre propre configuration. Ajoutez simplement ces deux exemples à votre fichier :

Sous le bloc [/settings/external scripts/scripts] 

[/settings/external scripts/scripts] 
allow arguments = true 
allow nasty characters = true 

check_quotas_commun=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Commun 1500 1800 
check_quotas_pixelabs=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Pixelabs 1500 1800

Si vous utilisez NSClient pour la première fois, remplacer par mon fichier ci-dessous :

Remarque : n’oubliez pas de changer l’adresse IP à la ligne 12 (et le mot de passe) : allowed hosts = 192.168.1.30

# If you want to fill this file with all available options run the following command:
#   nscp settings --generate --add-defaults --load-all
# If you want to activate a module and bring in all its options use:
#   nscp settings --activate-module <MODULE NAME> --add-defaults
# For details run: nscp settings --help


; in flight - TODO
[/settings/default]

password = pixelabs.fr
allowed hosts = 192.168.1.30

[/settings/NRPE/server]

insecure = true
use ssl = 
ssl options = 
verify mode = false
allow arguments = true
allow nasty characters = true

[/modules]

CheckNSCP = enabled
WEBServer = enabled
CheckSystem = enabled
NSClientServer = enabled
NSCAClient = enabled
NRPEServer = enabled
CheckExternalScripts = enabled
CheckHelpers = enabled
CheckEventLog = enabled
CheckDisk = enabled

[/settings/external scripts/scripts]
allow arguments = true
allow nasty characters = true

check_quotas_commun=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Commun 1500 1800
check_quotas_pixelabs=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Pixelabs  1500 1800

[/settings/external scripts/wrapped scripts]
allow arguments = true
allow nasty characters = true

[/settings/external scripts/wrappings]
allow arguments = true
allow nasty characters = true

bat = scripts\\%SCRIPT% %ARGS%
vbs = cscript.exe //T:30 //NoLogo scripts\\lib\\wrapper.vbs %SCRIPT% %ARGS%
ps1 = cmd /c echo If (-Not (Test-Path "scripts\%SCRIPT%") ) { Write-Host "UNKNOWN: Script `"%SCRIPT%`" not found."; exit(3) }; scripts\%SCRIPT% $ARGS$; exit($lastexitcode) | powershell.exe /noprofile -command -

[/settings/external scripts/alias]
allow arguments = true
allow nasty characters = true

alias_cpu=checkCPU warn=95 crit=90 time=5m time=1m time=30s
alias_cpu_ex=checkCPU warn=$ARG1$ crit=$ARG2$ time=5m time=1m time=30s
alias_mem=checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical type=virtual type=paged type=page
alias_up=checkUpTime MinWarn=1d MinWarn=1h

alias_disk=CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED
alias_disk_loose=CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED ignore-unreadable
alias_volumes=CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED
alias_volumes_loose=CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED ignore-unreadable 

alias_service=checkServiceState CheckAll
alias_service_ex=checkServiceState CheckAll "exclude=Net Driver HPZ12" "exclude=Pml Driver HPZ12" exclude=stisvc
alias_process=checkProcState "$ARG1$=started"
alias_process_stopped=checkProcState "$ARG1$=stopped"
alias_process_count=checkProcState MaxWarnCount=$ARG2$ MaxCritCount=$ARG3$ "$ARG1$=started"
alias_process_hung=checkProcState MaxWarnCount=1 MaxCritCount=1 "$ARG1$=hung"

alias_event_log=CheckEventLog file=application file=system MaxWarn=1 MaxCrit=1 "filter=generated gt -2d AND severity NOT IN ('success', 'informational') AND source != 'SideBySide'" truncate=800 unique descriptions "syntax=%severity%: %source%: %message% (%count%)"

alias_file_size=CheckFiles "filter=size > $ARG2$" "path=$ARG1$" MaxWarn=1 MaxCrit=1 "syntax=%filename% %size%" max-dir-depth=10
alias_file_age=checkFile2 filter=out "file=$ARG1$" filter-written=>1d MaxWarn=1 MaxCrit=1 "syntax=%filename% %write%"

alias_sched_all=CheckTaskSched "filter=exit_code ne 0" "syntax=%title%: %exit_code%" warn=>0
alias_sched_long=CheckTaskSched "filter=status = 'running' AND most_recent_run_time < -$ARG1$" "syntax=%title% (%most_recent_run_time%)" warn=>0
alias_sched_task=CheckTaskSched "filter=title eq '$ARG1$' AND exit_code ne 0" "syntax=%title% (%most_recent_run_time%)" warn=>0

alias_updates=check_updates -warning 0 -critical 0

check_ok=CheckOK Everything is fine!

Je reprends les commandes de supervision des quotas :

[/settings/external scripts/scripts] 
allow arguments = true 
allow nasty characters = true 

check_quotas_commun=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Commun 1500 1800 
check_quotas_pixelabs=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Pixelabs 1500 1800

Explication de la commande :

  • check_quotas_commun : nom de la commande
  • C:\Scripts\check_folder_size.vbs : l’emplacement du script VB
  • C:\Commun : le dossier à surveiller (Quotas Windows appliqué).
  • 1500 1800 : Seuil Warning & Critical en MB

Pour créer d’autres commandes, il suffit de copier/coller l’une des commandes et de changer uniquement les paramètres suivant :

  • Nom de la commande. Exemple : check_quotas_MONDOSSIER
  • Le dossier à surveiller. Exemple : C:\MONDOSSIER
  • Les seuils Warning & Critical (selon la taille de votre quotas). Exemple : si le dossier fait 50 Go. Warning : 45000Critical : 48000

ATTENTION : Rebooter le service NSClient++

Remarque : après chaque modification de fichier de configuration NSClient, il faut relancer le service.

Reboot NSClient Service

Supervision via CLI

Passons maintenant à la supervision de nos quotas Windows en ligne de commande depuis le serveur Centreon.

Nous allons allons utiliser le plugin NRPE.

[root@vm-centreon plugins]# ./centreon_plugins.pl --list-plugin | grep nrpe | grep PLUGIN
PLUGIN: apps::protocols::nrpe::plugin
[root@vm-centreon plugins]#

Les modes disponibles :

[root@centreon plugins]# perl centreon_plugins.pl --plugin=apps::protocols::nrpe::plugin --list-mode

Plugin Description:
    Trigger commands against NRPE/NSClient agent.

Global Options:
    --mode  Choose a mode.

    --dyn-mode
            Specify a mode with the path (separated by '::').

    --list-mode
            List available modes.

    --mode-version
            Check minimal version of mode. If not, unknown error.

    --version
            Display plugin version.

    --custommode
            Choose a custom mode.

    --list-custommode
            List available custom modes.

    --multiple
            Multiple custom mode objects (required by some specific modes)

    --pass-manager
            Use a password manager.

Modes Meta:
   multi

Modes Available:
   query
[root@vm-centreon plugins]#

Si vous utilisez ce plugin pour la première fois, vous aurez (sans doute) ces erreurs :

  • Can’t locate Convert/Binary/C.pm in @INC (@INC contains: /usr/lib/centreon/plugins …..
  • Can’t locate Digest/CRC.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….
  • Can’t locate IO/Socket/INET6.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….
  • Can’t locate Socket6.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….

Solution : Installer les modules perl suivant :

[root@centreon plugins]# cpan -i Convert::Binary::C
[root@centreon plugins]# cpan -i Digest::CRC
[root@centreon plugins]# cpan -i IO::Socket::INET6
[root@centreon plugins]# cpan -i Socket6

Supervision du dossier Pixelabs : (vous pouvez comparer avec le screen au début de l’article)

[root@centreon plugins]# perl centreon_plugins.pl --plugin=apps::protocols::nrpe::plugin --mode=query --custommode=nrpe --hostname=192.168.1.24 --command=check_quotas_pixelabs
WARNING:1646,8MB used |'FolderSize'=1646.8MB
[root@centreon plugins]#

Rappel des seuils :

  • Warning : 1500 MB 
  • Critical : 1800 MB 

Je remplis le dossier au delà de 1800MB : (il passe en alerte ciritical)

[root@vm-centreon plugins]# perl centreon_plugins.pl --plugin=apps::protocols::nrpe::plugin --mode=query --custommode=nrpe --hostname=192.168.1.24 --command=check_quotas_pixelabs
CRITICAL:2022,1MB used |'FolderSize'=2022.1MB
[root@vm-centreon plugins]#

Dossier Commun :

[root@centreon plugins]# perl centreon_plugins.pl --plugin=apps::protocols::nrpe::plugin --mode=query --custommode=nrpe --hostname=192.168.1.24 --command=check_quotas_commun
OK:72MB used |'FolderSize'=72MB
[root@centreon plugins]#

Le script fonctionne bien, mais il peut être amélioré. Si vous maîtrisez le VB. Si vous avez mieux, partager avec moi 🙂

Supervision via Centreon-Web

Tout est déjà expliqué ici : supervision-exchange-avec-centreon-nrpe-nsclient-part-3/

Je vous montre encore une fois. Nous allons commencer par l’ajout des macros personnalisées nécessaires, puis la création des commandes de supervision et enfin la création des services.

Voici les macros nécessaires :

  • $_SERVICEMODE$
  • $_SERVICESUBCOMMAND$
  • $_SERVICECOMMAND$
  • $_SERVICEOPTION$

Ajout des macros

Allez dans : Configuration > Collecteurs > Ressources

  • Cliquez sur Ajouter 
    • Nom de la ressource : $_SERVICEMODE$
    • Valeur de la ressource : 0
    • Lié au collecteur : Central
    • Statut : activé
  • Cliquez sur Sauvegarder
  • Répéter l’opération pour les autres macros ci-dessus.

Macros Personnalisées Centreon

Création de commande

Allez dans : Configuration > Commandes > Contrôles

  • Cliquez sur Ajouter
    • Nom de la commande : Check-Windows-Quotas
    • Type de commande : vérification
    • Ligne de commande :
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --custommode=$_SERVICESUBCOMMAND$ --command=$_SERVICECOMMAND$
  • Cliquez sur Sauvegarder

Création de modèle de service

Je ne peux plus m’en passer des modèles de services. Une seule commande pour tous les services. J’adore 🙂

Allez dans : Configuration > Services > Modèles

Remarque : vous pouvez mettre vos propres paramètres de contrôle/notification…etc.

  • Cliquez sur  Ajouter
    • Alias : Check-Windows-Quotas
    • Nom : Check-Windows-Quotas
    • Commande de vérification : sélectionner dans la liste : Check-Windows-Quotas
      • PLUGIN : apps::protocols::nrpe::plugin
      • MODE : query
      • SUBCOMMAND : nrpe
      • COMMAND : NE RIEN METTRE
    • Période de contrôle : 24×7 (selon votre configuration)
    • Allez dans l’onglet Notifications
      • Période de notification : 24×7 (selon votre configuration)

Modèle Service Centreon

  • Cliquez Sauvegarder

Création d’hôte

J’ai déjà ajouté l’hôte : Windows Server 2019. Rien de compliqué, vous avez un exemple ici : /#Creation_d8217hote

Création de service

Allez dans : Configuration > Services > Services par hôte

  • Cliquez sur Ajouter 
    • Description : Check-Quota-Pixelabs
    • Lié aux hôtes : Windows Server 2019
    • Modèle : le modèle qu’on vient de créer : Check-Windows-Quotas
      • COMMAND : check_quotas_pixelabs

Check Windows Quotas Centreon

  • Cliquez sur Sauvegarder

Ne pas modifier les champs en orange. Ajouter simplement le nom de votre commande dans le champ vide (COMMAND).

Rappel des commandes :

check_quotas_commun=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Commun 1500 1800 
check_quotas_pixelabs=C:\Windows\System32\cscript.exe //NoLogo //T:30 C:\Scripts\check_folder_size.vbs C:\Pixelabs 1500 1800

J’ai deux commandes, il faut donc créer deux services. Il nous manque check_quotas_commun

Remarque : si vous souhaitez ajouter des options de contrôle/notification..etc, ne pas modifier le SERVICE, mais le MODELE pour que les paramètres soient appliqués à tous les services.

Création du deuxième service rapidement. Cochez le service qu’on vient de créer : Check-Quota-Pixelabs

Service Centreon

  • Dans la liste Plus d’actions…
  • Cliquez sur Dupliquer 
  • Cliquez sur le service dupliqué pour le modifier : check-Quota-Pixelabs_1
  • Vous devez modifier deux paramètres :
    • Description : modifier le nom check-Quota-Pixelabs_1 en check-Quota-Commun
    • COMMAND : modifier le nom check_quotas_pixelabs en check_quotas_commun
  • Cliquez sur Sauvegarder

Exporter le collecteur Central : Allez dans Configuration > Collecteurs

  • Cochez le collecteur Central
  • Cliquez sur Exporter la configuration

Exporter Collecteur Central

  • Cliquez sur Exporter

Résultat de la supervision

Voilà, c’est terminé pour la supervision des quotas Windows :

Windows Quotas Monitoring


Si vous avez ces erreurs sous Centreon-Web :

  • Can’t locate Convert/Binary/C.pm in @INC (@INC contains: /usr/lib/centreon/plugins …..
  • Can’t locate Digest/CRC.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….
  • Can’t locate IO/Socket/INET6.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….
  • Can’t locate Socket6.pm in @INC (@INC contains: /usr/lib/centreon/plugins ….

Vos modules perl sont mal installés. La supervision en ligne de commande avec root fonctionne, mais pas avec l’user centreon-engine. Il faut que ces modules soient installés dans le répertoire /usr/perl5….etc, et non dans /root/perl5

Tenter de rajouter/modifier les variables d’ENV pour que l’user centreon-engine puisse y aller dans /root/perl5…etc.

N’hésitez pas si vous avez besoin d’aide.

Bonne journée à tous et à bientôt.

 
Besoin d’aide ? des questions ?

Venez sur le forum
logo Forum Pixelabs
***********
La rédaction de cette documentation demande beaucoup de temps, de motivation, mais surtout beaucoup de café 🙂

Vous aimez pixelabs ?

Offrez moi un petit café en cliquant sur la tasse ci-dessous.
pixelans_donation
Merci !

1 réponse

  1. sysadmin dit :

    Mise à jour de l’article, correction des fautes…
    bonne journée 🙂