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 :
- Windows Client/Server : je suis sous Windows Server 2019.
- Votre serveur Centreon (je suis en version 19.10.4) : pixelabs.fr/centreon/
- Centreon Plugin Packs : centreon-plugin-packs-monitoring/
- Ce script en VBS : check_folder_size
Télécharger NSClient++ : nsclient.org/download/
Mes quotas sous Windows Server 2019 :
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 | Choisir le type d’installation : Typical |
- 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)
- 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 : 45000 – Critical : 48000
ATTENTION : Rebooter le service NSClient++
Remarque : après chaque modification dans le fichier de configuration NSClient, il faut relancer le 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.
Création de commande
Allez dans : Configuration > Commandes > Contrôles
- Cliquez sur Ajouter
- Nom de la commande : Check-Windows-Quotas
- Type de commande : vérifier
- 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 me 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
- PLUGIN :
- Période de contrôle : 24×7 (selon votre configuration)
- Allez dans l’onglet Notifications
- Période de notification : 24×7 (selon votre configuration)
- 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
- 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
- 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
Résultat de la supervision
Voilà, c’est terminé pour la supervision des quotas Windows :
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.
Supervision Systèmes & Réseaux
Voir également mes projets sur la supervision : /supervision
- Supervision Certificat HTTPS/Windows : supervision-des-certificats-https-windows/
- Supervision Web HTTP(S) : supervision-https-response-expected-content-centreon/
- Supervision ORACLE BDD : oracle-database-monitoring-centreon-plugins/
- Supervision EMC VNX : vnx5300-vnx5200-monitoring-centreon/
- Supervision MSSQL : microsoft-sql-server-monitoring/
- Supervision Switch CISCO : switch-cisco-centreon-partie-1-2/
- Supervision VMWARE ESXi : vmware-esxi-6-7-monitoring/
- Supervision EXCHANGE Server : exchange-server-2016-monitoring-actif/
- Supervision Quotas Windows : supervision-des-quotas-windows-nrpe-nsclient/
- Supervision Skype for Business : supervision-microsoft-skype-for-business/
- Supervision HPE Proliant Gen10 : supervision-hpe-proliant-gen10-snmp-restapi/
- Supervision NETAPP SANTricity : supervision-netapp-santricity-storage-restapi/
Bonne journée à tous et à bientôt.
bonjour
j’essaie de mettre en place la gestion des quotas, les commandes fonctionnent sur le serveur de fichiers Win2012 et ouvre un popup avec les quotas mais dès que je passe en cli « No response from remote host » les autres commandes fonctionnent. Aurais tu une idée ?
merci par avance
Fred
Salut,
Il faut me montrer la configuration NSClient et la commande Centreon cli
bonjour
la commande cli
le nsclient.ini
merci par avance
Fred
Salut Fred,
ça à l’air Ok.
Est-ce que les commandes NSClient par défaut fonctionne via Centreon CLI ? checkCPU, checkMem ou simplement check_ok pour vérifier que NSClient fonctionne bien.
Le pare-feu est activé ? Si oui, désactive-le et retente le coup.
N’oublie pas de redémarrer le service NSClient après chaque modif dans le fichier nsclient.ini.
Tiens moi au courant.
Merci pour ta réponse
voila les résultats
[root@centreon]# /usr/lib/centreon/plugins/centreon_plugins.pl –plugin=apps::protocols::nrpe::plugin –mode=query –hostname=10.10.30.10 –custommode=nrpe –command=check_ca –nrpe-timeout=30
EXPIRED CN=moi-gg.fr expired 19/07/2021 17:54:22
EXPIRED CN=toi-gg.chic.lcl expired 07/03/2018 01:00:00
EXPIRED CN=lui-gg expired 31/12/2021 23:00:00
EXPIRED CN=eux-gg, O=CHIC expired 01/12/2018 15:51:10
[root@centreon]# /usr/lib/centreon/plugins/centreon_plugins.pl –plugin=apps::protocols::nrpe::plugin –mode=query –hostname=10.10.30.10 –custommode=nrpe –command=check_ok –nrpe-timeout=30
No message
[root@centreon]# /usr/lib/centreon/plugins/centreon_plugins.pl –plugin=apps::protocols::nrpe::plugin –mode=query –hostname=10.10.30.10 –custommode=nrpe –command=check_quotas_Depot –nrpe-timeout=30
UNKNOWN: No response from remote host.
[root@centreon]#
pourrait il y avoir un blocage du à l’extension VBS, le check_CA pour les certificats est en powershell
j’ai essayé d’ajouter dans le nsclient :
[/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 –
Aucunes améliorations, je sèche complétement 🙂
Fred
Le seul blocage qui pourrait y avoir est l’exécution du script : Clic-droit >> Propriété >> Débloquer
Si tu n’as pas de case à cocher « débloquer » c’est que c’est bon.
Si ça ne fonctionne toujours pas, je peux y jeter un coup d’œil à distance si tu veux (sysadmin[at]pixelabs.fr)
Bonjour,
Nous avons mis des quotas pour les profils de nos users, n’est-il pas possible de faire une commande qui vérifierait l’ensemble des dossiers d’un contenant qui auraient tous le même quota svp?
Merci d’avance,
Mathias
Bonjour,
Ce script permet de le faire je pense, mais je ne l’ai pas testé.
https://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/check_quota-2Epl/details
Mise à jour de l’article, correction des fautes…
bonne journée 🙂