Archive

Posts Tagged ‘Operations Manager’

System Center Operations Manager 2007 R2 Authoring Resource Kit

October 27th, 2009 No comments

Vor Kurzem hat Microsoft das OpsMgr Authoring Resource Kit unter  http://www.microsoft.com/downloads/details.aspx?FamilyID=9104af8b-ff87-45a1-81cd-b73e6f6b51f0&displaylang=en bereitgestellt.

Es beinhaltet neben der bereits auf der R2 CD enthaltenen Authoring Console folgende Punkte:

  • Management Pack Best Practice Analyzer
  • Management Pack Spell Checker
  • Management Pack Visio Generator
  • Management Pack Diff
  • Management Pack Cookdown Analyzer
  • All References Add-in
  • Workflow Analyzer
  • Workflow Simulator

Also ein paar interessante Ergänzungen!

Erste Version des SCOM2Nagios Connectors

April 10th, 2009 4 comments

Achtung: Neue Version http://www.mbaeker.de/2009/07/scom2nagios-version-1-1/

Does anyone need an english version of the instruction? Then just post a comment.

In Absprache mit meinem früheren Chef habe ich den bereits vor längerer Zeit versprochenen SCOM2Nagios Connector aufgeräumt und in eine releasefähige Version verpackt.

Ich stelle ihn hiermit unter die GPL. Lizenzinformationen sind mit im Zip File enthalten.

Ein Wort der Warnung:  Obwohl diese Version des Programms bei meinem früheren Arbeitgeber bereits im produktiven Umfeld lief, sollte er natürlich vorher ausgiebig in einer Testumgebung ausprobiert werden.

Die aktuell vorliegende Dokumentation ist sehr rudimentär und beschreibt hauptsächlich die (relative komplexe) Installation. Voraussetzung ist ein aktuelles .Net Framework, dass auch für den OpsMgr notwendig ist. Detailiertere Informationen müssen momentan noch aus dem mitgelieferten Quellcode entnommen werden.

Bei Rückfragen stehe ich natürlich über diese Webseite zur Verfügung (ohne Anspruch auf eine schnelle Reaktion).

Die Zip-Datei mit allen Informationen ist unter scc-scom2nagios_v10 zu finden.

OpsMgr und Powershell Part 1

March 30th, 2009 No comments

Zeitweise stieg die Datenbankgröße des OpsMgr extrem schnell an. Um herauszufinden, woher dieses ungewöhnliche Verhalten kam, wollte ich ein Liste aller Alerts mit deren Summe des Auftretens erstellen. Früher wäre ich dafür direkt in die Datenbank gegangen. Heute gibt es dafür Powershell. Das ist einfacher und supported.

Die Liste lässt sich mit folgendem Einzeiler erstellen:

get-alert | group-object -property Name | sort-object count

Der Aufbau ist recht einfach: Zuerst alle Alerts ausgeben (inklusiv der bereits geschlossenen). Diese Liste gruppieren nach der Eigenschaft Name. Als letztes die Ausgabe nach der Anzahl des Auftretens sortieren.

Die Ausgabe sieht dann gekürzt so aus:
[...]
158 SMTP Message Pending R... {SMTP Message Pending Routing is outside calcu...
790 Pool Non Pages Bytes i... {Pool Non Pages Bytes is outside the calculate...
4861 DB Chaining Flag {DB Chaining Flag, DB Chaining Flag, DB Chaini...
10754 Disk % Free Space low ... {Disk % Free Space low - Yellow(<15%)., Disk %...

Bei zirka 200 Agenten sind 11000 Disk Free Alerts innerhalb von sieben Tagen sehr ungewöhnlich.

Also schauen wir uns das mal genauer an:

get-alert -criteria 'Name Like ''Disk%''' | group-object -property NetbiosComputerName | ft *

Also alle Alerts ausgeben, die mit Disk beginnen. Das Ergebnis nach dem Computernamen, auf dem der Alarm aufgetreten ist sortieren. Zum Schluss das Ergebnis als Tabelle ausgeben:

Values Count Group Name
------ ----- ----- ----
{Rechner1} 10784 {Disk % Free Spa... Rechner1
{Rechner2} 89 {Disk transfer (... Rechner2
{Rechner3} 2 {Disk not respon... Rechner3

Laut dieser Ausgabe sind alle Alerts auf nur einem Rechner entstanden. Der Übertäter ist somit erkannt. Jetzt sollte man ihn genauer untersuchen, um die Ursache zu ermitteln.

Welche Skripte laufen auf dem OpsMgr Agent?

March 10th, 2009 No comments

Im Rahmen einer Supportanfrage bei MS wurde ich auf eine einfache Möglichkeit hingewiesen, wie man aufzeichnen kann, wann welches Skript durch den OpsMgr Agent ausgeführt wird:

http://blogs.technet.com/jeevanbisht/archive/2008/12/09/OpsMgr-2007-How-to-identify-what-script-is-running-on-the-agents-_2F00_-frequency-_2F00_-parameters.aspx

Zusammenfassend werden die Filter im Process Monitor von Sysinternals (jetzt Microsoft) so gesetzt, dass der Start und das Ende von cscript.exe Prozessen aufgezeichnet werden. Da dabei auch die Parameter mit protokolliert werden, ist so einfach zu sehen ob und wann ein Skript mit welchen Eigenschaften aufgerufen wurde. Beim Prozessende erkennt man auch eventuelle fehlerhafte Exitcodes.

Dies ist natürlich auch beim Entwickeln neuer Skript sehr nutzlich!

SCOM Agent Rollout mit SCCM

January 15th, 2009 No comments

Wenn bereits eine existierende SCCM Infrastruktur auf den Servern exisitert, dann macht es eventuell Sinn, den SCOM Client damit zu verteilen.

Dafür einfach ein Paket mit den Quelldateien aus dem AgentManagement Ordner vom SCOM Server erstellen.

Darin im x86 und x64 Ordner folgende Batchdatei install.cmd hinterlegen:

rem Sicherheitshalber msxml6 installieren (Voraussetzung)

msiexec.exe /i “%~dp0MSXML6.msi” /qn /m scom07 /l* “%systemroot%msxml6.log” REBOOT=REALLYSUPPRESS

msiexec.exe /i “%~dp0MOMAgent.msi” /qn USE_SETTINGS_FROM_AD=1 MANAGEMENT_GROUP=<hier name dermanagement group> MANAGEMENT_SERVER_DNS=<hier dns name  des scom servers oder gateways> ACTIONS_USE_COMPUTER_ACCOUNT=1 /m scom07 /l* “%systemroot%scomx86.log” REBOOT=REALLYSUPPRESS

Diese Batchdatei als Programm (jeweils für x86 und x64) hinterlegen. Als Collection in SCCM verwende ich im allgemeinen eine Sammelcollection, die die alle Zielsysteme hineinkommen. Darunter lege ich eine Filtercollection an, die aus den Zielsystemen nur die herausfiltert, die den Agent noch benötigen. Hier bietet sich eine Subselection als Query an, die alle Systeme ausschließt die den Dienst bereits haben. Eine Hardwareinventur (HW)  wird im Allgemeinen häufiger gemacht als eine Softwareinventur (SW). Daher erhält man die Infos über Dienst (HW) schneller zurück als Dateiinformationen aus der SW-Inventur.

Eine Query könnte so aussehen:

select SMS_R_System.ResourceID,SMS_R_System.ResourceType, SMS_R_System.Name,SMS_R_System.SMSUniqueIdentifier, SMS_R_System.ResourceDomainORWorkgroup, SMS_R_System.Client from SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_R_System.ResourceId not in (select SMS_R_System.ResourceId   from  SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SERVICE.Name = “HealthService”)

Als Collectionlimit die übergeordnete Sammelcollection eintragen. Die Ankündigung läuft dann auf der Filtercollection.

OpsMgr ADDS 2003 Management Pack Bug

January 12th, 2009 No comments

Heute konnte ich mir endlich die Zeit nehmen einen Alert im SCOM genauer zu betrachten. Obwohl über 2GB auf der NTDS Platte des DCs frei waren und die Subdomäne nur eine Datenbankgröße von 512MB hat, meldete SCOM regelmäßig, dass die Platte zu voll sei.

In diesem Fall sieht die Berechnung folgendermaßen aus:

Name der Regel im MP: AD Database Drive Free Collection

Aktuelle Größen:

ntds.dit: 454672 kbytes
ntds.logs: 10240 kbytes
(das MP Skript betrachtet nur das edb.log File)

Folgende Defaultparameter werden an das Skript übergeben (sind überschreibbar):
<Threshold_DIT>0.2</Threshold_DIT> (also 20%)
<Boundary_DIT>500000</Boundary_DIT>
<Boundary_LOG>200000</Boundary_LOG>
<Threshold_LOG>0.05</Threshold_LOG>

Die Berechnung sieht so aus (aus dem Skript kopiert):

lReserveLog = lSizeDB * CDbl(LOG_THRESHOLD)
If (lReserveLog < LOG_BOUNDARY) Then
lReserveLog = LOG_BOUNDARY
End If
lReserveDB = lSizeDB * CDbl(DIT_THRESHOLD)
If (lReserveDB < DIT_BOUNDARY) Then
lReserveDB = DIT_BOUNDARY
End If

Anhand dieses Beispiels:

  • DIT: 454MByte*0.2 -> 90,8MB (<500000) -> Boundary 500MByte
  • LOG: 454MByte*0,05 -> 22,7MB (<200000) -> Boundary 200MByte

Die Berechnung der Logfilegröße basiert auf der ADDS Datenbankgröße (DIT)

Die Logdateien und die DB liegen auf der gleichen Partition. Daher gilt:

If (lFreeSpaceDB < (lReserveDB + lReserveLog)) Then
bSuccess = False

strMessage = “Free space (” & lFreeSpaceDB & “KB) on drive ” &  UCase(Left(strPathDB, 2)) & ” is lower than the required reserved space for AD Database and Log file. It should be at least ” & (lReserveLog + lReserveDB) & ” KBytes.”

Somit muss der freie Platz größer als 700MByte sein. Was in diesem Beispiel zutrifft.

Trotzdem erscheint im Eventlog und im SCOM die Fehlermeldung:

AD Database and Log : Free space (2614404KB) on drive D: is lower than the required reserved space for AD Database and Log file.
It should be at least 3182704 KBytes.

Wenn man 3182704 durch die DB Größe (454672) teilt erhält man exakt 7. Die entspricht 2+5, d.h. es gibt ein Problem mit dem Komma-Trenner (, in deutsch, . in english)

Ich habe dies überprüft, in dem ich das Skript angepasst habe, damit es die erhaltenen Parameter auch in die Registry speichert (setData..):
Die Boundary Werte sind korrekt, aber Threshold Werte sind auf 5 (log) und 2 (dit) !

Lösung:

Override auf deutschen DCs mit 0,05 und 0,2

Test:
Die Datenbankplatte wurde etwas gefüllt. Kurz darauf wurde folgende korrekte Meldung generiert:

AD Database and Log : Free space (225996KB) on drive D: is lower than the required reserved space for AD Database and Log file. It should be at least 700000 KBytes

Natürlich könnte man als Alternativen Workaround immer die 7fache Größe der Datenbank als freien Speicherplatz bereitstellen, aber gerade wenn man Domänencontroller virtualisiert und die Platten vollständig reserviert, ist dies kein gangbarer Weg. Microsoft sollte hier wie üblich auf die Ländereinstellungen achten! (Oder Nachkommastellen vermeiden. Die Prozentwerte könnten auch als 5% angegeben werden, anstatt 0.05)