Supervision WSUS Supervision : Comment checker l’état de la synchronisation WSU

Supervision WSUS Supervision : Comment checker l’état de la synchronisation WSUS ? 31/01/2019 Florian B. 8 Commentaires Centreon, Supervision, WSUS Sommaire [-]  I. Présentation  II. Récupérer l'état de la synchronisation  III. Le script pour la vérification  IV. Configuration de NSClient++ pour ajouter le script  V. Intégration à la supervision I. Présentation Au sein d'un tutoriel précédent, on avait vu comment exécuter des scripts PowerShell avec NRPE, je vous propose d'exploiter cette possibilité offerte par NSClient++ pour vérifier l'état de la synchronisation de votre serveur WSUS afin de l'intégrer à votre supervision. Il est indispensable de s'assurer que son serveur WSUS synchronise correctement car sans cela, il ne va pas récupérer les dernières mises à jour auprès des serveurs Windows Update de Microsoft. Par conséquent, les mises à jour ne seront pas déployées auprès de vos clients. Pour parvenir à cela, j'ai développé un script PowerShell qui récupère l'état de la synchronisation et qui retourne un état à la solution de supervision. En fonction de cet état, on peut générer une alerte si besoin. Cette solution s'appuie sur NSClient++ et NRPE. II. Récupérer l'état de la synchronisation Directement depuis le serveur WSUS, grâce à la commande "Get-WsusServer" on va pouvoir récupérer des informations sur l'état de la dernière synchronisation. En fait, il faut vérifier deux choses :  L'état de la dernière synchronisation, elle doit être réussie  La date de la dernière synchronisation, car la dernière peut être réussie mais elle peut dater de 10 jours, ce qui n'est pas normal Grâce à la commande ci-dessous on va accéder à un ensemble de propriétés qui vont répondre à notre besoin : (Get-WsusServer).GetSubscription().GetLastSynchronizationInfo() En cas d'échec de synchronisation : En cas de synchronisation réussie : Ce sont les propriétés "Result" et "EndTime" que nous allons utiliser dans notre script. III. Le script pour la vérification Maintenant, il est temps de voir le script complet et que je vous fournisse quelques explications : La variable $NumberOfDaysWithoutSync indique le nombre de jours sans synchronisation que l'on tolère. Par exemple, si la dernière synchronisation réussie remonte à plus de 7 jours, il y aura une alerte. Modifiez la valeur en fonction de vos besoins. La variable $ExitCode retourne un code à NRPE qui sera ensuite renvoyé à votre solution de supervision. Si l'état est sur "0" alors c'est OK, si l'on retourne "2" c'est qu'il y a un problème de synchronisation. Voici le code complet du script : # Synopsys : Check status of WSUS Synchronization # Initial state $ExitCode = 0 # Variables $NumberOfDaysWithoutSync = 7 # Get the status of the last synchronization $WsusLastSyncOutput = (Get- WsusServer).GetSubscription().GetLastSynchronizationInfo() ## CHECK SYNC STATE # Normal state : Result = Succeeded if(!($WsusLastSyncOutput.Result -eq "Succeeded")){ $ExitCode = 2 Write-Output "CRITICAL: The last sync $($WsusLastSyncOutput.EndTime) state is $($WsusLastSyncOutput.Result)" } ## CHECK THE DATE OF THE LAST SYNC # Get the datetime of the last synchronization $WsusLastTimeOutput = (Get- WsusServer).GetSubscription().LastSynchronizationTime # Calculate the reference date $DateReference = (Get-Date).AddDays(-$NumberOfDaysWithoutSync) # If the last sync time is older than the calculate date (= date of the day - $NumberOfDaysWithoutSync) it's critical if($DateReference -gt $WsusLastTimeOutput){ $ExitCode = 2 Write-Output "CRITICAL: Last sync is older than $NumberOfDaysWithoutSync days and his state is $($WsusLastSyncOutput.Result)" } # Evaluate final exit code result for all passed checks. if ($ExitCode -eq 0) { Write-Output "OK: The last sync $($WsusLastSyncOutput.EndTime) state is $($WsusLastSyncOutput.Result)" } exit $ExitCode Enregistrez ce bout de code dans un fichier et enregistrez-le dans le dossier "scripts" de NSClient++, par exemple avec le nom "Check-WsusSyncState.ps1". Vous pouvez personnaliser les messages de retour si vous le souhaitez, ce sont les messages qui s'afficheront sur l'interface de votre solution de monitoring. IV. Configuration de NSClient++ pour ajouter le script Maintenant, on va intégrer ce script à NSClient++ pour que l'on puisse l'appeler depuis notre solution de supervision, Centreon par exemple. Editez le fichier de configuration NSClient.ini et ajoutez cette ligne sous le bloc "[/settings/external scripts/scripts]". Pensez à vous référer à l'article mentionné au début de celui-ci pour la configuration de NRPE si nécessaire. Sur la ligne ci-dessous, adaptez le nom de votre script PowerShell si nécessaire. Le premier terme, c'est à dire "Check-WsusSyncState" correspond au nom de la commande qu'il faudra appeler depuis Centréon, ensuite NSClient fait le lien entre ce nom de commande et le script à exécuter. Check-WsusSyncState=cmd /c echo scripts\Check-WsusSyncState.ps1; exit($lastexitcode) | powershell.exe -command - Pour finir, redémarrez le service NSClient++ pour prendre en compte cette nouvelle configuration. V. Intégration à la supervision En fonction de votre système de supervision, vous devrez ensuite effectuer la configuration pour appeler notre script via NRPE, votre commande de check ressemblera à ceci : .\check_nrpe -H 192.168.1.150 -c Check-WsusSyncState Lorsque tout sera prêt, vous allez obtenir un bel état de votre synchronisation WSUS dans votre Centréon (ou autre) : Voilà, ce tutoriel est terminé ! Que pensez-vous de cette vérification ? Allez-vous l'implémenter ? uploads/S4/ supervision 1 .pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 22, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.4424MB