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.
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.
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 ?