Nous savons depuis longtemps que PowerShell est le langage de Scripting ultime pour les plateformes Microsoft. Cette solution nous permet de lancer des commandes complexes, aussi bien dans le monde système (par exemple, les services Windows) que dans le monde applicatif (Par exemple, la gestion de solution SharePoint).
De nombreuses entreprises utilisent aussi une solution Open Source pour le monitoring des infrastructures et NAGIOS est une référence de ce domaine. Cette solution est très modulaire et contrôle les serveurs Windows avec l’aide d’un agent installable directement sur les servers: NSClient.
Cet agent propose de nombreuses actions de surveillance de base, mais offre aussi l’activation de modules supplémentaires à travers son fichier de configuration (NSC.ini). Tout se passe par les “External Scripts” qui exigent que la ligne du “NSC.ini” soit décommentée:
- CheckExternalScripts.dll
Une fois cette option activée, on peut développer son script PowerShell qui doit toujours renvoyer 4 valeurs possibles en EXIT:
- 0: OK
- 1: WARNING
- 2: CRITICAL
- 3: UNKNOWN
La valeur de sortie (équivalent de ERRORLEVEL) est testable sous PowerShell avec la variable: $LASTEXITCODE ou $?
Ainsi, le script peut être du format :
function Get-Check-LastExecution()
{
[int]$ExitCode = 0
if($myCaseResults -lt 0)
{
Write-Host "UNKNOWN: PowerShell Check did not work - No results"
$ExitCode = 3
}
elseif($myCaseResults -lt 10)
{
Write-Host "OK:", $myCaseResults, " results for this test"
}
elseif($myCaseResults -lt 100)
{
Write-Host "WARNING:", $myCaseResults, " results for this test"
$ExitCode = 1
}
else
{
Write-Host "CRITICAL:", $myCaseResults, " results for this test"
$ExitCode = 2
}
return $ExitCode
}
exit Get-Check-LastExecution
Cette fonction vous laisse la place à toute votre imagination pour adapter ce code à votre besoin, du moment que vous restez dans ce cadre des 4 valeurs possibles du code retour (0, 1, 2 ou 3)
Lorsque votre script PS1 est utilisable selon votre besoin, il doit être stocké dans le sous-répertoire “scripts” de NSCClient.
Vous devez alors éditer à nouveau le NSC.INI et ajoutez la ligne dans la rubrique “[External Scripts]” :
- check_ps_myCheckToDo=cmd /c echo scripts\myCheckToDo.ps1; exit $lastexitcode | powershell.exe -command -
Il ne reste plus qu’à ajouter cette tache dans les taches effectuées par le serveur NAGIOS et la planification adaptée, sous la forme :
- check_by_nrpe_hostparam!MyServer.Domain!check_ps_myCheckToDo!’’
Le check sera alors ajouté dans les contrôles réguliers et permet un monitoring fin des applications selon les besoins.
Attention, le module NSCClient de la machine exécute le script sans droit réseau (local system) ce qui ppeut vous bloquer si vous tentez d’accéder à un SQL Server distant.
Romelard Fabrice [MBA]
Commentaires
Enregistrer un commentaire