[Tutoriel] Installation de deux clients NSClient++ sur le même serveur

Posted by

Le problème

Je suis tombé sur un problème amusant l’autre jour. Un serveur sur lequel deux entités se partageaient l’administration voulaient toutes les deux superviser le serveur avec NSClient++, mais chacune avec leur propre configuration et leurs propres plugins.

En théorie, il n’est pas possible d’installer deux fois le client sur le même serveur Windows. En fait, si on relance l’installeur une seconde fois, il nous proposera simplement de modifier l’installation existante.

01_nsclient
Impossible d’installer un deuxième client dans un autre répertoire via l’installeur .msi

Retour aux sources

Cependant, on peut s’en sortir avec les sources. Je pars du principe que le premier client a été installé simplement à partir du MSI.

Pour pouvoir installer le deuxième client, il faut récupérer une archive .zip sur le site (Source).

On peut ensuite le déposer dans C:\Program Files\, en prenant soin de lui donner un autre nom que celui du client installé via le fichier .msi (C:\Program Files\NSclient++\ par défaut).

Pour l’exemple, j’ai pris C:\Program Files\NSClientNew\.

02_nsclient
Nos deux dossiers cohabitent
03_nsclient
Lancer le binaire à la main ne fonctionnera pas non plus

Configurer le second NSClient

Modifiez ensuite le fichier de configuration C:\Program Files\NSClientNew\NSC.ini pour que les ports ne soient pas identiques aux ports du premier client.

[NSClient]
port=12481
[NRPE]
port=56661
...

Dans un prompt administrateur, lancer la commande suivante pour créer un service Windows spécifique pour le second client.

PS C:\Program Files\NSClientNew> sc.exe create NSClientNew binPath= 'C:\Program Files\NSClientNew\NSClient++.exe' start=  auto DisplayName= 'NSClient++ New'
[SC] CreateService réussite(s)

NSClient++ devrait maintenant apparaitre dans la liste

05_nsclient
On a bien 2 lignes NSClient++ et NSClient++New

Si tout se passe bien, on peut maintenant démarrer le service et les ports en écoute doivent apparaitre. Le log C:\Program Files\NSClientNew\nsclient.log doit afficher la ligne suivante

2015-07-16 15:51:26: message:modules\FileLogger\FileLogger.cpp:86: Starting to log for: NSClient++ - 0.3.9.330 2011-09-02

Si on a l’entrée suivante, c’est que les ports ont été mal configurés et qu’il y a conflit

2015-07-16 15:49:35: error:include\Socket.h:691: bind failed: 10048: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée.

Une fois que c’est bon, vous pouvez tester vos deux clients depuis votre serveur Nagios via un check_nrpe sans arguments

[root@nagios libexec]# ./check_nrpe -H 192.168.20.10 -p 5666
I (0.3.9.328 2011-08-16) seem to be doing fine...
[root@nagios libexec]# ./check_nrpe -H 192.168.20.10 -p 56661
I (0.3.9.330 2011-09-02) seem to be doing fine...

Bonus track : supprimer le service NSClientNew une fois qu’on en veut plus

Si jamais l’envie vous prend de supprimer ce que vous venez de faire, il faudra supprimer à la main le service de la façon suivante, puis supprimer le dossier. Exécutez la commande suivante dans un cmd/powershell en tant qu’administrateur

C:\Windows\system32>sc delete NSClientNew
[SC] DeleteService réussite(s)

Leave a Reply

Votre adresse de messagerie 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.