18/11/2024

PowerShellSupervision

NSClient++ : Exécuter des scripts PowerShell avec NRPE

I. Présentation

La supervision de serveurs Windows avec Centreon passe bien souvent par l'utilisation du SNMP et/ou du célèbre logiciel NSclient++ et qui agit comme un véritable agent de supervision, compatible avec les fonctions NSCA et NRPE. Bien qu'il intègre nativement différents modules dont check_nt pour vérifier l'usage du CPU, de la RAM, des disques, etc. Il peut s'avérer nécessaire de faire des vérifications plus poussées, plus personnalisées.

Par l'intermédiaire de NRPE (Nagios Remote PluginExecutor), nous allons pouvoir exécuter des scripts en local sur le serveur Windows et retourner les informations ensuite à Centreon. Dans ce tutoriel, nous allons voir comment configurer NRPE pour exécuter des scripts, dans ce cas PowerShell, mais ça fonctionne aussi avec d'autres langages (VBS, DOS, Python, etc.).

II. Configurer NRPE sur NSClient++

Nous partirons du principe que NSClient++ est déjà installé sur votre serveur, mais ce n'est pas sûr que le NRPE soit actif ! Tout dépend des options sélectionnées lors de l'installation.

Si vous procédez à l'installation, voici comment configurer NRPE (après tout dépend de la solution de supervision qui va interroger NRPE).

Il est tout à fait possible de revenir sur cette configuration ultérieurement. Celle-ci s'effectue dans le fichier nsclient.ini. Voici quelques indications :

Activer le serveur NRPE

NRPEServer = enabled

Activer l'exécution de scripts externes

CheckExternalScripts = enabled

Paramétrage du serveur NRPE

Les options de cette section sont à ajuster, selon si vous souhaitez utiliser un certificat ou non, de l'authentification ou non. La configuration la plus basique est :

[/settings/NRPE/server]

; Undocumented key
verify mode = none

; Undocumented key
insecure = true

Pour que la modification soit prise en compte, il faudra redémarrer le service mais avant cela nous allons poursuivre la configuration.

III. Ajouter un script PowerShell à NSClient++

Toujours dans le fichier nsclient.ini, on va déclarer les scripts externes que l'on souhaite utiliser. Dans mon exemple, ce sera le script PowerShell "check-dhcp-failover.ps1". Il est impératif de le stocker dans le répertoire "scripts" du dossier d'installation NSClient++.

Voici la ligne de code à inclure :

[/settings/external scripts/scripts]
check-dhcp-failover = cmd /c echo scripts\check-dhcp-failover.ps1; exit($lastexitcode) | powershell.exe -command -

Le nom de la commande/plugin que l'on pourra utiliser dans NRPE est "check-dhcp-failover" et ensuite on indique le chemin vers le script.

Pour ajouter un autre script, il ne sera pas utile d'inclure la ligne "[/settings/external scripts/scripts]" mais seulement de déclarer un autre script sous le premier.

Maintenant, on redémarre le service pour prendre en compte les changements :

Restart-Service nscp

On va modifier la stratégie d'exécution des scripts PowerShell sur le serveur pour que ce soit autorisé :

Set-ExecutionPolicy Unrestricted

Pour finir, on va vérifier que ça fonctionne, on peut tester le script depuis le serveur directement, avant de passer sur le Centreon. On va ainsi valider une première étape grâce à la commande "nscp.exe test" suivie du nom de notre plug-in déclaré dans nsclient.ini.

cd C:\Program Files\NSClient++
nscp test
check-dhcp-failover

La dernière commande saisie ci-dessus doit vous retourner l'état du check de votre script, c'est-à-dire l'état/la valeur qui sera envoyée à votre Centreon.

 

IV. Check_nrpe depuis Centreon

Depuis le serveur Centreon cette fois-ci, nous allons interroger NRPE à distance. Le script check_nrpe se trouve dans le dossier suivant :

/usr/lib64/nagios/plugins/

Si l'on exécute le script avec l'option -H et que l'on précise l'IP du serveur distant que l'on vient de configurer, on doit obtenir ceci :

./check_nrpe -H 192.168.1.50

Maintenant, on va exécuter directement notre plug-in personnalisé associé au script PowerShell. L'option "-c" sera utilisée, ce qui donne :

./check_nrpe -H 192.168.1.150 -c check-dhcp-failover

Si l'état est retourné, c'est tout bon ! Pour ma part, il s'agit d'un script qui vérifie l'état du DHCP notamment l'utilisation des étendues DHCP (scope) d'où le retour suivant :

Maintenant, à vous de jouer !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “NSClient++ : Exécuter des scripts PowerShell avec NRPE

  • Article simple et efficace ! J’étais déjà tombé dessus plusieurs fois.

    On remonte l’état via un write-output dans le script Powershell mais je rajouterai qu’on peut remonter des « performances data », ce qui est utile si on veut graph derrière.

    Exemple : OK: Scope use is 55,05% | scope_use=55,05

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.