Wednesday, December 15, 2010

Exchange 2007/2010 realtime message tracking

Exchange Message Tracking is het bijhouden (‘tracken’) van een bericht en zijn reis door de Exchange organisatie. Message tracking vind plaats op iedere Exchange 2007/2010 server met de Edge Transport, Hub Transport of Mailbox rol.

Er zijn grofweg twee methodes om de message tracking logs te bekijken, ofwel met het Get-MessageTrackingLog cmdlet, ofwel met de Tracking Log Explorer welke je kunt vinden in de Toolbox. Overigens gebruikt de Tracking Log Explorer onder de motorkap ook gewoon het Get-MessageTrackingLog cmdlet, dat zie je onderaan het scherm:

image

Onlangs vroeg een klant mij of hij deze logbestanden ook realtime kan raadplegen. Die functionaliteit zit standaard niet in Exchange maar is met PowerShell eenvoudig te maken. Stel dat we bijvoorbeeld de log entries van de laatste minuut willen raadplegen, dat kunnen we doen met de –Start parameter van het Get-MessageTrackingLog cmdlet. Het handigste is om de tijd in een variabele te zetten, dan hoeven we niet te letten op de exacte formulering zoals je die in bovenstaand screenshot zien.

Zo zetten we het huidige tijdstip in een variabele:

$TijdStip = Get-Date

Met de AddMinutes methode kunnen we hier 1 minuut van afhalen (ofwel –1 minuut bij optellen) en die tijd in de variabele zetten:

$TijdStip = (get-date).AddMinutes(-1)

Nu vragen we de Message Tracking Log entries op van de laatste minuut:

Get-MessageTrackingLog -Start $TijdStip

We hebben nu gezien hoe we de log entries kunnen opvragen vanaf een bepaald tijdstip. Als we dit nu in een loop zet die elke paar seconden draait dan hebben we min of meer realtime logging:

$a = (get-date) # Zet de huidige tijd in $a, we moeten ergens beginnen…
Write-Host Semi-realtime log viewer: #
For(;;) # Start een oneindige loop
{ # Begin loop
Get-MessageTrackingLog -Start $a # Vraag entries op vanaf het tijdstip in $a
$a = (get-date) # Opdracht klaar, sla de huidige tijd weer op in $a
Start-Sleep -Seconds 5 # Wacht 5 seconden
} # Einde loop

Sla dit bestand op als tekstbestand met de .ps1 extensie, in PowerShell kun je dit ps1-bestand vervolgens aanroepen. Afbreken van de loop doe je met CTRL+C in de PowerShell console. Uiteraard kun je het script aanpassen, bijvoorbeeld om alleen entries te tonen met de EventID RECEIVE.

Meer informatie over bovenstaande onderwerpen kun je hier vinden:

Exchange 2010 SP1: Configure Message Tracking

Exchange 2007/2010: Managing Message Tracking

Using the Get-Date Cmdlet

No comments: