Sechs Prozesse, alle beginnen mit „R9“, und fehlt einer, ist die Anwendung kaputt. Statt sechs einzelner Monitore zählt ein parametrisierter Skriptmonitor alle Prozesse per Platzhalter.
Eine Anwendung besteht aus sechs Prozessen, deren Namen alle mit R9 beginnen – von R9AppServerReceive.exe bis R9sap.exe. Fällt einer davon aus, ist die Anwendung nicht mehr funktionsfähig, und alle sechs sollen beendet und neu gestartet werden. Die eingebaute Prozessüberwachung von Operations Manager arbeitet jedoch mit festen Prozessnamen – sechs einzelne Monitore wären nötig, und beim nächsten ähnlichen Fall wieder.
Die Idee: zählen statt einzeln prüfen
Ein Community-Mitglied hatte die passende Lösung: ein Skriptmonitor mit drei Parametern:
- Prozessname mit Platzhalter, z. B.
R9*, - Mindestanzahl laufender Prozesse, z. B. 6,
- Höchstanzahl laufender Prozesse, z. B. 6.
Liegt die Anzahl außerhalb des Bereichs, wechselt der Monitor in den kritischen Zustand. Weil alle Werte Parameter sind, lässt sich derselbe Monitortyp für beliebige Anwendungen wiederverwenden.
Das Skript
param(
[string]$NamePattern = 'R9*',
[int]$Min = 6,
[int]$Max = 6
)
$api = New-Object -ComObject 'MOM.ScriptAPI'
$bag = $api.CreatePropertyBag()
$procs = @(Get-Process -Name $NamePattern -ErrorAction SilentlyContinue)
$count = $procs.Count
$bag.AddValue('Count', $count)
$bag.AddValue('Running', ($procs.ProcessName | Sort-Object -Unique) -join ', ')
$bag.AddValue('State', $(if ($count -ge $Min -and $count -le $Max) { 'OK' } else { 'BAD' }))
$bag
Der Monitor wertet Property[@Name='State'] aus. Mit Running im Alarmtext erkennt der Operator sofort, welcher Prozess fehlt.
Tipp
Die WMI-Abfrage SELECT * FROM Win32_Process WHERE Name LIKE 'r9%' liefert zwar die Prozesse, aber keine Anzahl – genau daran war der erste Versuch gescheitert. Get-Process mit Platzhalter ist einfacher und schneller.
Automatisch reagieren: Recovery
Soll SCOM bei einem Ausfall alle Prozesse beenden und die Anwendung neu starten, hinterlegen Sie am Monitor eine Recovery-Aktion für den kritischen Zustand – zum Beispiel ein Skript, das die verbleibenden Prozesse beendet und den zugehörigen Dienst oder Starter neu aufruft:
Get-Process -Name 'R9*' -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 5
Start-Service -Name 'R9Starter'
Recovery-Aktionen sollten Sie zurückhaltend einsetzen und protokollieren: Ein Neustart verdeckt sonst unter Umständen eine dauerhafte Ursache.
Heute
Die integrierte Vorlage Process Monitoring kann seit SCOM 2012 Mindest- und Höchstanzahlen pro Prozess überwachen, unterstützt aber weiterhin keine Platzhalter. Für Anwendungsgruppen wie diese bleibt der parametrisierte Skriptmonitor in Operations Manager 2019, 2022 und 2025 die flexibelste Lösung.