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.
Reprenons les grandes étapes de déclaration du script:
- Créer une instance de l'objet de script d'Operations Manager (MOMScriptAPI).
- Créer un nouveau property Bag en appelantla méthode Objet MOMScriptAPI.CreatePropertyBag.
- Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue.
- 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.
- 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
Puis nous allons paramétrer les expressions pour qu'elles interprètent les valeurs de Property[@Name='Status'] .
Nous avons fixé dans le script 3 valeurs possibles Warning , critical et Good.
Et enfin
Reste ensuite à positionner le type d'état en fonction de chaque expression.
Aucun commentaire:
Enregistrer un commentaire
Les commentaires sont soumis a modération