OpsMgr ADDS 2003 Management Pack Bug

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)

This entry was posted in Operations Manager, System Center and tagged , , , , . Bookmark the permalink.