Supervision : comment vérifier l’état des Teaming dans Windows Server ?

I. Présentation

Puisque l'on a vu dans un précédent tutoriel comment exécuter des scripts PowerShell avec NRPE sur une machine Windows, nous allons voir un autre exemple pour exploiter cette possibilité. L'objectif aujourd'hui, c'est de vérifier l'état des équipes de cartes réseau (teaming) dans Windows Server pour détecter s'il y a une ou plusieurs cartes en erreur dans une équipe. Pour réaliser cette opération, j'ai développé un script PowerShell qui va permettre de vérifier l'état des teaming dans Windows Server.

nicteam5

Teaming Windows Server

En production, si ce n'est à cause des lenteurs générées à cause de la perte de performances, il n'est pas évident de se rendre compte qu'il y a un souci sur une carte réseau associée à une équipe. En intégrant à la supervision une vérification directement au niveau des membres de l'équipe, on obtient un état précis.

Un simple ping pour vérifier qu'un serveur est joignable ne permet pas de détecter une défaillance sur l'un des membres de l'équipe.

II. Script Check-NetLbfoTeamMember.ps1

Ci-dessous le code du script qui va permettre de vérifier l'état des membres de l'ensemble des équipes du serveur :

# Initial state
$ExitCode = 0

# Get the status
$LbfoTeamMemberOutput = Get-NetLbfoTeamMember | Select-Object Name,FailureReason,Team
$LbfoTeamMemberCount = (Get-NetLbfoTeamMember).Count

# Normal state : AdministrativeDecision / NoFailure
Foreach($Member in $LbfoTeamMemberOutput){

   if(!(($Member.FailureReason -eq "NoFailure") -or ($Member.FailureReason -eq "AdministrativeDecision"))){

     $ExitCode = 2
     Write-Output "CRITICAL: Member $($Member.Name) of the team $($Member.Team) state is $($Member.FailureReason)"

   }
}

# Evaluate final exit code result for all passed checks.
if ($ExitCode -eq 0) { Write-Output "OK: Members ($LbfoTeamMemberCount) of all LBFO teams are OK" }

exit $ExitCode

Grâce à ce script, s'il y a un membre défaillant au sein de votre équipe, ou de l'une des équipes du serveur, s'il en a plusieurs, vous recevrez une alerte sur votre solution de supervision. Ceci vous permettra d'intervenir pour rétablir la situation.

Disponible sur mon GitHub

III. Intégration dans NSClient++

Puisqu'on a le script entre nos mains, on va intégrer ce script à NSClient++ dans le but de pouvoir l'exécuter via NRPE sur notre hôte et remonter les informations dans Centreon. Enfin, je dis Centreon mais cela peut être une autre solution de supervision.

Modifiez le fichier de configuration NSClient.ini sur votre serveur et ajoutez cette ligne sous le bloc "[/settings/external scripts/scripts]" :

Check-NetLbfoTeamMember=cmd /c echo scripts\Check-NetLbfoTeamMember.ps1; exit($lastexitcode) | powershell.exe -command -

Sauvegardez vos modifications puis redémarrez le service NSClient++  : une étape indispensable pour prendre en compte cette nouvelle configuration.

Après intégration dans la solution de supervision, l'état va remonter :

Si vous avez un serveur WSUS, ce tutoriel pourrez vous intéresser : Comment vérifier l'état de la synchronisation WSUS ?

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

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.

Nombre de posts de cet auteur : 5473.Voir tous les posts

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.