Website-Icon Frankys Web

Exchange 2010 Monitoring via PRTG

Ich setze PRTG für das Monitoring meiner Systeme ein, die Möglichkeiten der Überwachung sind vielfältig. PRTG liefert sogar einen ganzen Satz an Sensoren für Exchange mit.

Auf den ersten Blick wird man regelrecht erschlagen, über 100 Sensoren bringt PRTG für einen einzelnen Exchange Server mit. Nachdem ich aber die Sensoren etwas zurecht gestutzt habe, fiel mir auf das einige wichtige Informationen fehlen.

Zum Beispiel wird keine DAG überwacht, der Status der Datenbanken wird ebenfalls nicht direkt überwacht. Via PRTG lassen sich allerdings auch eigene Sensoren erstellen, somit ist PRTG in der Lage sich per Script die Informationen zu besorgen, die der Admin angezeigt bekommen will. Ich habe daher ein eigenes Script erstellt, welches den Status der Datenbanken an PRTG liefert.

# www.FrankysWeb.de

$servername = „Exchange.domain.local“

#—————————————
$pssession = new-pssession -configurationname „Microsoft.Exchange“ -connectionuri „http://$servername/Powershell“ -Authentication Kerberos
$startsession = import-pssession -session $pssession -allowclobber -WarningAction SilentlyContinue | out-null

$dbstatus = get-mailboxdatabasecopystatus
$dbcount = (Get-MailboxDatabaseCopyStatus).count

$prtg = ‚<?xml version=“1.0″ encoding=“Windows-1252″ ?>
<prtg>

foreach ($db in $dbstatus)
{
$dbname = $db.Name
$dbstate = $db.Status
$dbvalue = „10“
if ($dbstate -match „Mounted“)
{
$dbvalue = „1“
}
if ($dbstate -match „Dismounted“)
{
$dbvalue = „2“
}
if ($dbstate -match „Healthy“)
{
$dbvalue = „3“
}

$prtg +=“ <result>
<channel>$dbname</channel>
<value>$dbvalue</value>
<showChart>1</showChart>
<showTable>1</showTable>
<mode>Absolute</mode>
</result>

}

$prtg +=“<text>Anzahl der Datenbanken: $dbcount</text>
</prtg>“
remove-pssession -session $pssession
$prtg

Das Script liefert eine XML Ausgabe zurück welche via PRTG verarbeitet werden kann

Über den Programm/Script Sensor, kann man sich alle Informationen anzeigen lassen die interessant sind, Es gibt beispielsweise RoundTrip Sensoren die überwachen ob eine Mail gesendet wird. Da ich aber keinen Einfluss auf die Mailserver meines Provider habe, schaue ich mit diesem Script nur nach ob eine Mail in das Zielpostfach zugestellt wurde

# www.FrankysWeb.de

$servername = „SMAIL01.frankysweb.local“
$from = „prtg@frankysweb.de“
$to = „frank@frankysweb.de“

#—————————————
$pssession = new-pssession -configurationname „Microsoft.Exchange“ -connectionuri „http://$servername/Powershell“ -Authentication Kerberos
$startsession = import-pssession -session $pssession -allowclobber -WarningAction SilentlyContinue | out-null

$subject = get-date -Format ddMMyyyyHHmm
Send-MailMessage -from $from -To $to -Subject „$subject“ -SmtpServer $servername

$mail = Get-MessageTrackingLog -MessageSubject $subject -EventId Deliver

$mailstatus = $mail.EventId
if ($mailstatus -match „Deliver“)
{
$state = „1“
}
else
{
$state = „0“
}

$prtg = ‚<?xml version=“1.0″ encoding=“Windows-1252″ ?>‘
$prtg +=“<prtg>“
$prtg += “
<result>
<channel>Interner Mailversand</channel>
<value>$state</value>
<showChart>1</showChart>
<showTable>1</showTable>
<mode>Absolute</mode>
</result>“
$prtg +=“</prtg>“
remove-pssession -session $pssession
$prtg

Die Möglichkeiten sind vielfältig. Die Scripte liefern nur einen Status-Code zurück, dieser Statuscode lässt sich in PRTG selbst wieder in sprechende Werte ausgeben, Beispiel 0 für OK, 1 für Warnung, 2 für Fehler.

Wer sich etwas in die Materie einarbeitet hat sicherlich Spass daran

Auch die msXfaq liefert klasse Scripte für PRTG:

http://www.msxfaq.net/tools/prtgexchange.htm

Übrigens: Es gibt eine kleine PRTG Version kostenlos, die ist allerdings auf wenige Sensoren beschränkt.

Die mobile Version verlassen