CheckADC

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

Der Active Directory Connector ist eine wichtig Komponente bei der Migration von Exchange 5.5 nach Exchange 2000/2003. Daher gibt es zum ADC jede Menge Informationsseiten auf der MSXFAQ.DE wie z.B. Active Directory Connector Grundlagen, ADC CAs, ADC-Probleme, ADC-Advanced, ADCDetails, ADCTools und ADC-FAQ.

Aber gerade weil er so wichtig und komplex ist, hat mich immer gestört, dass die Funktionsüberprüfung mehr als spärlich ist. Sie können zwar über das Eventlog (Siehe ADC Diagnose) die Funktion im Groben überwachen, aber so richtig prächtig ist das alles nicht. Vor allem wenn Sie in einer größeren Umgebung mit vielen CA's auf verschiedenen Servern sind, ist dies keine effektive Methode mehr. Und gerade vor der umschaltung in den Native Mode (Siehe Switch Native) möchte ich sicher sein, dass wirklich alle Objekte von Exchange 5.5 in das Active Directory und umgekehrt übernommen wurden. Aber wie kann das geprüft werden ?.

CheckADC prüft nur den Replikationsstatus der verschiedenen CAs, aber kann natürlich nicht erkennen, ob wirklich alle Quellen und Ziele miteinander repliziert sind. Hier ist GalComp geeignet, um die Objekte quantitativ zu erfassen.
Die Anzeige von CheckADC ist zu interpretieren, da CheckADC zusätzlich feststellt, welche Objekte seit der letzten Replikation geändert wurden. CheckADC kann aber nicht erkennen, ob die Änderungen auch für den ADC relevant sind. Insofern sind hier weitere Prüfungen erforderlich. für einen aktiven Test müsste ein Objekt verändert und nach einiger Zeit die Replikation zum anderen System kontrolliert werden. Dies leistet CheckADC nicht.

ADC Funktionsweise

Werfen wir einen sehr kleinen Blick hinter die Kulissen. Der ADC arbeitet mit Verbindungsvereinbarungen, um veränderte Objekte einer Quelle zu erkennen und in das Ziel zu replizieren. Sowohl Exchange 5.5 als auch das Active Directory arbeitet dabei mit USNs. Das sind Nummern, die bei jeder Änderung erhöht werden und pro Server individuell sind.

Der ADC merkt sich nach dem Abschluss einer Replikation die zuletzt verarbeite USN. Beim nächsten Lauf fragt der ADC bei der Quelle dann gezielt nach der aktuell höchsten USN und ermittelt darauf dann die Objekte, die verändert wurden. Aus der Differenz der USNs und den davon betroffenen Objekten lässt sich die Funktion des ADC ableiten. Dies muss natürlich je Verbindungsvereinbarung für jede aktive Richtung gemacht werden. Der ADC merkt sich dabei die Informationen in folgenden Feldern des jeweiligen CA's:

Feldname Typ Bedeutung

msExchServer1ExportContainers

Multivalue

In diesem Feld stehen alle OUs des Active Directory, welche der ADC bei der Replikation aus dem Active Directory nach Exchange 5.5 überwachen soll

msExchServer1ImportContainer

String

In diese OU werden die Daten von Exchange 5.5 in das Active Directory per Default importiert.

msExchServer1NetworkAddress

String

Name des Domain Controllers

msExchServer1HighestUSN

 

Die zuletzt verarbeitete USN dieses Domain Controllers

msExchServer2ExportContainers

Multivalue

Dieses Feld enthält alle Empfängercontainer der Exchange 5.5 Umgebung, die der ADC in das Active Directory importieren soll

msExchServer2ImportContainer

String

In diesem Empfängercontainer werden neue Objekte aus dem AD in Exchange 5.5 angelegt

msExchServer2NetworkAddress

String

Name des Exchange 5.5 Server (oder SRS) mit der Exchange 5.5 Datenbank

msExchServer2HighestUSN

String

Höchste USN dieser Exchange 5.5 Verzeichnisdatenbank

Funktionsweise von CheckADC

Für die Kontrolle ist daher folgende einfache Überprüfung notwendig:

  • Von Exchange 5.5 In das Active Directory
    Wenn EX5:highestCommittedUSN > ADC:msExchServer2HighestUSN then Check EX->AD
  • Aus dem Active Directory nach Exchange 5.5EX
    Wenn AD:highestCommittedUSN > ADC:msExchServer1HighestUSN then Check AD->EX

Mein Testprogramm macht nun nichts anderes, als eben jedes CA durchzugehen und für jede Verbindungsvereinbarung das jeweils passende Feld msExchServer1HighestUSN bzw. msExchServer2HighestUSN mit der USN des dazu gehörigen Servers abzufragen. Sind die USNs abweichend, müssen ein einem zweiten Schritt vom Server die veränderten Objekte für die jeweiligen Export Container abgerufen werden. Eine USN erhöht sich natürlich auch, wenn sich irgend ein Objekt im Verzeichnisdienst verändert.

Für jede Verbindungsvereinbarung werden ausgewählte Parameter in eine XML-Datei gespeichert.

Die Datei enthält unter anderem den Namen der Verbindungsvereinbarung, den Server und die ermittelten USNs und noch nicht replizierte Objekte. Das Beispiel zeigt gut, dass zwischen der aktuellen und der letzten USN insgesamt 379 Änderungen durchgeführt wurden, aber es keine Objekte der Exportcontainer betroffen hat. Diese XML-Datei ist natürlich um einiges größer, wenn Sie viele Verbindungsvereinbarungen überwachen und zudem die noch nicht replizierten Objekte mit ausgegeben werden.

Die Aufbereitung dieser Information erfolgt z.B. mit einem entsprechenden Stylesheet im Browser. Dies könnte dann so aussehen:

Wenn sie weitere CAs haben, dann enthält die Tabelle mehr Zeilen. Über das XSL-Stylesheet ist es sehr einfach möglich, die Sortierung zu ändern. Auch die Farbcodierung ist über das Stylesheet zu steuern. So wertet das Script auch aus, ob die Verbindungsvereinbarung auf "Immer", "Nie", oder "Zeitplan"  gestellt ist. Auch die Anzahl der noch nicht replizierten Objekte wird entsprechend grün, gelb oder rot angezeigt.

In größeren Umgebungen ist die Ansicht dann natürlich schon interessanter,  wie folgendes zwar verkleinerte Bild zeigt.

Die roten Bereiche zeigen CA's. bei denen sehr viele Objekte noch nicht repliziert sind. Das ist zum Teil natürlich darauf zurückzuführen, dass die CAs "deaktiviert" sind, wie die gelben Felder der letzten Spalte zeigen. Aber es ist auch gut ersichtlich, dass einige CA's wirklich ein Problem haben. Unter den roten Feldern sind einige dunkelgrün gekennzeichnete CA's. Hier sind Objekte zu replizieren. Nur die hellgrün angezeigten CAs sind aktuell "in Sync".

Aufruf

Das Script wird mit den erforderlichen Berechtigungen, die verschiedenen Werte im Active Directory und Exchange 5.5 zu lesen, aufgerufen. Über Parameter ist eine Steuerung möglich:

C:\>cscript z:\CheckADC.VBS [/debug:xx] [/Target:adc-dn] [/MaxDelta:xxxx]

Die Bedeutung der Parameter ist:

  • Debug
    Hiermit ist eine Diagnosefunktion aktivierbar, die auf dem Bildschirm weitergehende Werte ausgibt. Je höher die Nummer, desto detaillierter die Ausgaben: 0 = nur Ausgabe,  1 = Errors,  2 = Warnungen,  3 bis 6 = Informationen
  • Target
    Wird kein Target angegeben, dann durchläuft das Script alle Verbindungsvereinbarungen. Durch die Angabe des distinguished Name einer Vereinbarung wird dieser allein geprüft.
  • MaxDelta
    Das Script prüft, ob die Anzahl der ausstehenden Objekte größer ist, als der angegebene Schwellenwert. Wenn dies der Fall ist, wird ein ALERT auf dem Bildschirm oder in MOM2005 generiert.

Zusätzlich ist in der aktuellen Version der Pfad der XML-Ausgabedatei im Code anzupassen.

MOM Integration

Das Script ist so entwickelt, dass es erkennt, ob es mit WScript oder unter MOM2005 aufgerufen wird. Erkennt das Script den Aufruf unter MOM, so wird für jede Verbindungsvereinbarung das Ergebnis als Event oder Alert gemeldet. Ein Eintrag wird immer dann zu einem Alert, wenn die Anzahl der ausstehenden Objekte größer als der angegebene "MaxDelta"-Wert ist.

Download

Bitte haben Sie Verständnis, dass sehr leistungsfähige Scripte, die weit über eine Funktion als Muster" hinausgehen, nicht öffentlich verfügbar sind. Solche Skripte sind in kleinen Umgebungen nur bedingt bis gar nicht sinnvoll einsetzbar. In größeren Umgebungen hingegen sind zu oft individuelle Anpassungen erforderlich. Sie erhalten diese nur im Rahmen von Support oder Dienstleistung.
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Diese Script ist nur sinnvoll, wenn Sie noch Exchange 5.5 und Exchange 2000/2003 im gemischten Mode betreiben und den ADC einsetzen. In einer reinen Umgebung mit Exchange 2000/2003 im Native Mode ist dieses Script nicht erforderlich.

checkadcmom.v.1.4.vbs.txt

Geplante Weiterentwicklung

  • Andere Monitoring Lösungen
    Denkbar wäre, das Script auch für Umgebungen mit anderen Programmen als MOM2005 anzupassen, so dass auch ein OpenView, uniCenter, WhatsUp, BMC Patrol oder andere Überwachungsprogramme.
  • Weitere Parametrisierung
    Ebenso könnte der Ausgabepfad und andere Parameter ebenfalls per Kommandozeile übermittelt werden.
  • ADCGlobalNames Behandlung In einer gemischten Umgebung haben AD-Objekte, die in einer native Exchange 200x Site sind, keinen ADCGlobalNames mehr.
  • Erkennen nicht zu replizierender Objekte
    Der ADC erkennt bei den Quellobjekten auch, ob diese durch das jeweilige CA überhaupt zu replizieren sind. Das kann er z.B.: am LegacyExchangeDN festmachen. Nur Objekte, die zur Exchange 5.5 Zielsite passen, müssen repliziert werden. Aktuell listet CheckADC daher unter umständen noch zu viele Objekte auf.

Weitere Links

  • MOM2005
  • QStatusMOM
    Überwachung der Warteschlangen anhand des Verweilzeit der ältesten Mail
  • CheckRUS mit MOM
    Überwachung der Funktion des RUS anhand der aktuellen und der von RUS zuletzt bearbeiteten USN
  • WSUS
    Überwachung der Eventlog des Windows Update Clients auf den durch MOM überwachten Systemen und Warnung wenn Patches ausstehen.