Hier bearbeiten wir die Thematik der Überwachung eines Prozesses.
Es soll ein Critical Alert erzeugt werden und der Status des Systems auf Unhealthy gesetzt werden, wenn der zu überwachende Prozess nicht mehr läuft.
Ebenso ist denkbar, dass ein Prozess in einer bestimmten Anzahl auf dem gemonitorten System laufen soll, z.B.weil genau zwei Webservices laufen müssen.
Wir nutzen einen Script-Monitor und holen die gewünschte Information aus dem WMI durch ein VB-Skript.
Für denjenigen der einen Skript-Monitor blind einrichten kann, hier nur eine Variante eines möglichen VB-Skriptes. Danach eine detailierte Vorgehensweise zur Einrichtung des Monitors im SCOM Authoring.
Hier zuerst das VB-Skript am Beispiel von „notepad.exe“ als zu überwachender Prozess.
'Script ProcessCounter.vbs Dim oAPI, oBag, oWMI, oProcess, sProcessname sProgramname="notepad.exe" Set oWMI = GetObject("winmgmts:\\.\root\cimv2") Set oProcess = oWMI.ExecQuery("select name from win32_process where name='" & sProgramname & "' ") Set oWMI = Nothing Set oAPI = CreateObject("MOM.ScriptAPI") Set oBag = oAPI.CreatePropertyBag() Call oBag.AddValue("ProcessCount",oProcess.count) Call oBag.AddValue("ProcessName",sProgramname) Call oAPI.Return(oBag) |
Das Skript schreibt die Variablen ProcessCount und ProcessName in PropertyBag und dort kann der Monitor zugreifen.
ProcessCount ist für die Anzahl der aktuell laufenden Prozesse von „notepad.exe“ und ProcessName kann für die Message des Alerts verwendet werden.
Einrichten des Monitors im SCOM
a) Authoring
b) Management Pack Objects
c) Start des Wizzard „Create a Monitor“
d) Auswahl „Unit Monitor …“
e) Monitor Type : Scripting – Generic – Timed Script Two State Monitor und Auswahl eines geeigneten Management Pack oder erstellen eines neuen leeren Management Pack.
f) General: Name – Name des Monitors
g) Beschreibung – kurze Beschreibung was der Monitor überwacht
h) Monitor target – Allgemeines Ziel, wie z.B „Windows Server Operating System“ oder „Computer“
i) Parent monitor – hier wählen wir „Availability“ und disablen den Monitor, da wir ihn sicher nicht auf allen angegebenen Monitor target laufen lassen wollen. Dort wo er laufen soll spezifizieren wir später über Overrides.
j) Schedule: Schedule lässt mehr vermuten, aber es geht hier nur um die Angabe des Meßintervalls, z.b. 5 Minuten. Mit „Synchronize at“ könnte man einen exakten Zeitpunkt initieren.
k) Script: File Name – Angabe des Dateinamens unter dem das folgende VB-Skript auf den Zielsystemen gespeichert wird
Timeout – max. Laufzeit unseres Skriptes
Und hier fügen wir unseren Skriptcode wie oben angegeben ein. Der Skriptcode wird unter dem angegeben Dateinamen auf den Zielsystemen gespeichert und in den angegeben Meßintervallen ausgeführt.
l) Unhealthy Expression: Hier werden die Bedingungen für den „Unhealthy“ Zustand definiert. In unserem Fall gilt dies, wenn die Anzahl des zu überwachenden Prozesses gleich Null ist. Wir tragen Property[@Name=’ProcessName‘] equals 0 ein.
m) Healthy Expression: Und hier definieren wir die „Healthy“ Bedingung, z.B. soll die Anzahl unseres zu überwachenden Prozesses größer 0 sein.
Wir tragen Property[@Name=’ProcessName‘] greater than 0 ein.
n) Configure Health:
o) Configure Alerts:
Ein weiteres Beispiel für einen Messagetext (Alert Description) unter Verwendung von ProcessCount und ProcessName aus dem PropertyBag:
Process $Data/Context/Property[@Name=’ProcessName‘]$ does not run! Runs $Data/Context/Property[@Name=’ProcessCount‘]$ times.
Gut verwendbar, wenn z.B. mehr als ein Prozess laufen muss und nur 1 von X laufenden Prozessen bereits einen Alert auslöst.