Moniteur de deux ou trois états pour script chronométré (Partie 2)

Comme nous l'avons survolé dans la première partie, l'utilisation du script permet à SCOM de répondre à de très nombreux besoins de monitoring.

image

Reprenons les grandes étapes de déclaration du script:

  1. Créer une instance de l'objet de script d'Operations Manager (MOMScriptAPI).
  2. Créer un nouveau property Bag en appelantla méthode Objet MOMScriptAPI.CreatePropertyBag.
  3. Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue.
  4. Faire un Sumit des données pout quelle puissent etre traitées par Opsmgr 2007 en appelant la méthode de l'objet MOMScriptAPI.Return.
  5. Ajoutez le script à un Management Pack. Définir le nom du script, les arguments, et la fréquence à laquelle le script s'exécute.

Regardons maintenant un exemple de script qui analyse le nombre de processus lancés. Nous avons donc 2 ou 3 arguments a positionner , le nom du processus et le nombre de processus minimum et acceptable.
Dans le cas d'un moniteur a 3 états nous pouvons déterminer que dans une fourchette acceptable le nombre de processus rend un service dégradé, en dessous le service est non rendu.

'----------------------------- 
'Declaration des variables

Dim oAPI, oBag
Dim ErrorCount
Dim WarningCount
Dim SuccessCount
Dim propertyBag ' Voir Etape 3
Set oAPI = CreateObject("MOM.ScriptAPI") ' Voir Etape 2
Set oArgs = WScript.Arguments

'declaration des constantes events type pour le suivi des action dans l'event viewer
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_SUCCESS = 4

If oArgs.Count < 3 Then
' Si le script est lancé sans le nombre correct d'argument il genere un event puis s arrete

Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_TYPE_ERROR, _
"Le multi processMonitor est lancé sans argument."
WScript.Quit -1
End If

'Recuperation des valeurs des arguments pour SCOM
strProcess = oArgs.Item(0) ' argument 1 le nom du processus
GoodLowerCount = oArgs.Item(1) 'Argument 2 le nombre acceptable de processus (génére un Warning)
GoodUpperCount = oArgs.Item(2) ' Argument 3 en dessous de ce nombre le script génère une erreur

' MODE - DEBUG il génère un event en cas de SUCCESS
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_TYPE_SUCCESS, _
"Le nombre de processus a valider pour : " & strProcess & " Et " & GoodLowerCount & " et " & GoodUpperCount & " comme arguments."


strComputer = "." ' puisque le script tourne en local via l'agent
' Requete WMI
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcess & "'")

' MODE - DEBUG il génère un event en cas de SUCCESS
' Set objShell = Wscript.CreateObject("Wscript.Shell")
' objShell.LogEvent EVENT_TYPE_SUCCESS, _
' "ProcessMonitor colProcesses.Count equals " & colProcesses.Count & "."

' Comparaison des resultats et des arguments

'SI il n'y a pas assez de processus mais encore acceptable - MODE DEGRADED
if colProcesses.Count => cInt(GoodLowerCount) and colProcesses.Count <= cInt(GoodUpperCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
objShell.LogEvent EVENT_TYPE_WARNING, _
"WARNING : There are not enough " & strProcess & " running. " & colProcesses.Count & " were running."
' Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Warning")
Call propertyBag.AddValue ("Process", strProcess)
End If

'SI il n'y a pas assez de processus - MODE CRITICAL
if colProcesses.Count < cInt(GoodLowerCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
' objShell.LogEvent EVENT_TYPE_ERROR, _
' "CRITICAL ALERTE : There are not enough " & strProcess & " running. " & colProcesses.Count & " were running."


' Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Critical")
Call propertyBag.AddValue ("Process", strProcess)
End If

'SI il y'a assez de processus - MODE HEALTHLY

if colProcesses.Count > cInt(GoodUpperCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
objShell.LogEvent EVENT_TYPE_SUCCESS, _
"The process, " & strProcess & ", has " & colProcesses.Count & " processes running."
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Good")
Call propertyBag.AddValue ("Process", strProcess)
End If

' SUMIT des DONNEES

Call oAPI.Return(propertyBag)




Une fois le script terminé , il faudra l'intégrer dans Opsmgr 2007



image



Puis nous allons paramétrer les expressions pour qu'elles interprètent les valeurs de Property[@Name='Status'] .



image

Nous avons fixé dans le script 3 valeurs possibles Warning , critical et Good.



image



Et enfin



image



Reste ensuite à positionner le type d'état en fonction de chaque expression.



image

Aucun commentaire:

Enregistrer un commentaire

Les commentaires sont soumis a modération