ExChecker – Prüftool für die Exchange Umgebung

Der ExChecker ist bereits im Jahr 2015 entstanden. Damals war der einzige Zweck den Mailflow vom Exchange zu einem Externen Empfänger und zurück zu testen.

Hinzugekommen sind weitere Prüfmechanismen um die Exchange Umgebung zu überwachen. Primär ging es darum eine Website anzuzeigen die sich automatisch aktualisiert und den Status den Mailverkehrs anzeigt. Mittlerweile, in Version 1.1, sind folgenden Methoden implementiert:

  • QuerySchema
  • Mail-Zähler (Tag / Monat / Jahr / Gesamt)
  • Mailzustellungskette überprüfen
  • Exchange Dienste
  • Ping
  • Speicherplatz aller Festplatten / Partitionen
  • Datenbankgröße
  • E-Mail Report ( HTML / Text)

Das Script wird auf einem Exchange Server oder einem System mit EWS / Exchange Management Shell ausgeführt. Aufrufbar mit Parametern um die gewünschte Funktion zu testen. Nach jedem durchlauf wird die HTML-Datei neu generiert und zeigt gewünschte Informationen an. Die HTML-Datei liegt im Scriptverzeichnis und beinhaltet einen Content-Refresh alle 15 Sekunden. Somit kann diese auch auf einem Monitor angezeigt werden der über keine aktive Bedienung verfügt.

Die Steuerung des Scripts geschieht mit Hilfe der „Settings.ini“ Datei. Dort werden sämtliche Parameter für die einzelnen Prüfmechanismen gesetzt.

Es kann ein geplanter Task mit den gewünschten Reporting / Monitoring Funktionen erstellt werden!

Die Funktionen in der Übersicht

QuerySchema

Dieser Paramater ist der erste von derzeit 8 die übergeben werden können. Hiermit wird das AD und Exchange Schema aus der Konfigurationspartition abgefragt und in die HTML-Datei geschrieben.

Die Funktion bietet kein Log oder Mailreport Unterstützung.

 

 

CountMails

Der Parameter -CountMails Tag/Monat/Jahr/Alle zählt für den übergebene Zeitraum die Anzahl empfangener / versandter SMTP-Mails.

Die Anzahl wird dann passend in der HTML-Datei angezeigt.

Informationen werden nicht in dass Log aufgenommen oder per Mail versandt.

CheckMailFlow

Folgenden Einstellungen in der Settings.ini sind für diese Funktion notwendig:

  • Mailbox
  • UserDoamin
  • UserName
  • UserPAss
  • ExternMail
  • SMTPServer
  • Wartezeit
  • MailFlowLog

Die Funktion „CheckMailFlow“ senden über die EWS-Schnittstelle eine Nachricht an <ExternMail> und wartet  <Wartezeit> auf die Antwort. Via EWS wird in das Postfach <Mailbox> geschaut ob die Antwort eingetroffen ist. Beim Versand wird ein zufälliger Betreff generiert, und in eine variable Gespeichert. Beim Erhalt wird geprüft ob eine Nachricht mit dem zuvor definierten Betreff mit einem vorangestellten „RE“ eingegangen ist. Fällt die Prüfung Positiv aus, so ist der Mailflowtest erfolgreich.

Neben der Anzeige in der HTML wird auf Wunsch auch ein Eintrag in der LOG-Datei erzeugt.

 

CheckExServices

Folgenden Einstellungen in der Settings.ini sind für diese Funktion notwendig:

  • ExServiceLog

Die Funktion CheckExServices sucht nach allen Exchange Servern ab Version 2010 in der Umgebung. Die gefunden Server werden mit Hilfe des CMDLets  „Test-ServiceHealth“ auf Funktionalität geprüft.

Die Ergebnisse werden dann Pro Server und Rolle in der HTML-Datei angezeigt, mit passendem Status. Des weiteren wird eine die Information in die LOG-Datei geschrieben.

Wird der Parameter „-SendMailreport Text“ mit übergeben wird ausschließlich im Fehlerfall eine Email an die vordefinierte Empfängeradresse versandt.

Ping

Mit Hilfe des Parameters Ping wird eine ICMP-Ping Anfrage an alle gefunden Exchange Server ausgeführt. Diese werden überprüft und je nach Status in der HTML dargestellt.

HDDSpace

Der Überprüfungsparameter HDDSpace ermittelt für alle Laufwerke auf allen gefunden Exchange Servern die Festplattennutzung. Die Kapazität wird ausgelesen und der freie Speicherplatz angezeigt. Folgende Parameter in der Settings.ini sind für diesen Parameter:

  • HDDGBWarnung
  • HDDIniFileName
  • HDDStatusLog

<HDDGBWarnung> gibt den Grenzwert an der nicht unterschritten werden darf. Ist der freie Speicherplatz eines Volumes geringer als dieser globale Grenzwert kommt es zum Fehler.

Um ein einzelnes Laufwerk mit anderen Grenzwerten zu Konfigurieren, kann eine INI-Datei mit dem definierten Namen aus der Variable auf diesem abgelegt werden. Der Inhalt schaut folgendermaßen aus:

[HDDSettings] ;Exchange HDDs Grenzwert in GB an freien speicher
HDDGBWarnung=70

Liegt eine Datei mit diesem Inhalt auf dem Laufwerk nutzt es andere Grenzwerte. Zudem kann das Ergebnis des Test in der LOG-Datei abgelegt werden. Beim Versand deiner E-Mail Nachricht als reiner TEXT, wird der nur der Status „Fehler“ berücksichtigt und es kommt zur Meldung.

 

DBSpace

Mit Hilfe dieses Parameters lässt sich jede Datenbank auf den Speicherstatus überprüfen. dabei wird die Datenbankgröße, der freie Speicherplatz in der Datenbank als auch das Zusammenspiel beider Werte betrachtet. Folgender Prozess erklärt den Überprüfungsmechanismus (Download):

ExChecker_DBspace

Am Ende des Prozess soll benachrichtigt werden wenn ein eingriff erforderlich ist. Wichtig war mir jedoch die Benachrichtigungen im Warnungs- und Fehlerfall so gering wie möglich zu halten.

In der Settings.Ini können folgenden Parameter gesetzt werden:

  • DBGrenzwert
  • DBDifferenzWert
  • DBFreeSpaceGrenzwert
  • DBStatusLog

Soll für eine Datenbank ein Benutzerdefinierter Grenzwert definiert werden, so ist im Scriptverzeichnis ein INI-Datei mit dem Namen der DB anzulegen (DB1.ini). Inhalt dieser Datei muss wie folgt aufgebaut sein um den benutzerdefinierten Grenzwert zu verwenden:

[DBSettings] ;Grenzwert den die Datenbankgröße nicht überschreiten soll in GB
DBGrenzwert=260

 

SendMailreport

Diese Funktion erstellt einen Emailreport, wahlweise als HTML Nachricht nach jeder Ausführung oder ausschließlich im fehlerfalle als Text formatiert. Demnach sind die zu Übergebenden Parameter HTML / TEXT.

Für die Funktion sind in der Settings.Ini folgenden Werte entscheidend:

  • SMTPServer
  • SMTPRcpt

Ist die Entscheidung für den Textbasierten Report gefallen, wird nur über die zuvor ausgewählten Parameter ein Report erstellt.

Beispiel:

Direkt in der PowerShell:

.\ChkEx_1.1.ps1 -QuerySchema -CheckEXServices -Ping -HDDSpace -DBSpace -SendMailreport Text

Als Geplante Aufgabe:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -WindowStyle Hidden G:\Scripts\ChkEx\ChkEx_1.1.ps1 -QuerySchema -CheckMailFlow -Ping -HDDSpace -DBSpace -CheckEXServices -SendMailreport TEXT

Download