Exchange ActiveSync Auswertungen

Es gibt mehrere Möglichkeiten, Informationen über ActiveSync-Partnerschaften zu ermitteln. Hier eine kurze Aufstellung:

  • Globale ActiveSync Klassen
    Seit Exchange 2010 pflegt Exchange eine Liste der Gerätetypen als schneller Überblich
  • ActiveSync Partnerschaften
    Zudem kann ein Administrator natürlich je Postfacht ermitteln, welche Geräte damit verbunden sind und wann z.B. die letzte Synchronisation erfolgt ist
  • IIS-Logs
    Da ActiveSync per HTTPS mit dem Exchange Server spricht, kann natürlich auch da ausgewertet werden.

Für den Administrator stellt sich nun die Frage, wie Sie die Nutzung von ActiveSync auch in Zahlen umwandeln können. Ich stelle im folgenden die drei Optionen vor.

Get-ActiveSyncDeviceClass

Seit Exchange 2010 gibt es das Commandlet Get-ActiveSyncDeviceClass, welches alle Geräteklassen auflistet.

So erhalten Sie schon mal schnell einen Überblick.

Natürlich können Sie auch gezielt nach Windows Phone 8 suchen:

Get-ActiveSyncDeviceClass | `
   where {$_.devicetype -eq "WP8"} | `
       ft name,device* -autosize

Das Commandlet durchsucht aber nicht etwas die Postfächer nach Partnerschaften oder das AD-Objekt zum Gerät, sondern der Exchange Server legt in der "Configuration"-Partition entsprechende Objekte an. Siehe auch:

Get-ActiveSyncDevice

Dieser Befehl sammelt nun alle Geräte, die eine Partnerschaft haben oder hatten. Sie benötigen auch hier Exchange 2010, da erst dann Exchange zu jeder Partnerschaft auch einen Eintrag im Active Directory anlegt, so dass die Ermittlung einfach und schnell möglich ist.

Get-ActiveSyncDeviceStatistics

Für Exchange 2010 gibt es mit "Get-ActiveSyncDeviceStatistics" einen neuen leistungsfähigen Befehl. Als Parameter wird entweder eine Mailbox oder die DeviceID erwartet. Dann hingegen schaut das Commandlet in das Postfach des Mitarbeiters und holt sich den letzten Status der Replikation. Mit etwas PowerShell lassen sich sehr nette Daten daraus generieren, z.B.

Get-ActiveSyncDeviceStatistics

Leider kann man nun nicht einfach ein "Get-Mailbox | Get-ActiveSyncDeviceStatistics" machen, da es keine passenden Felder zum Auslesen gibt. Man kann aber eine kleine FOR-Schleife einbauen. Hier erzeuge ich eine CSV-Datei mit den Daten.

Get-Mailbox |%{ 
   Get-ActiveSyncDeviceStatistics -Mailbox $_.distinguishedname } | 
      ConvertTo-Html | Out-File -FilePath c:\easstats.htm

Statt des "ConvertTo-HTML" können Sie mit einem Export-CSV natürlich auch eine Liste zur weiteren Verarbeitung erstellen.

Beachten Sie, dass ein Anwender mehrere Geräte haben kann und daher auch mehrere Zeilen vorkommen. Auch kann ein Gerät durchaus den Anwender wechseln. Damit verschwinden aber noch nicht die statistischen Daten.

Wer mag kann hier natürlich die Ausgabe noch nach der DeviceID gruppieren und nach dem lastSync Datum sortieren. So kann man sogar den Weg eines Geräts durch die verschiedenen Hände ermitteln. Nicht alles was technisch möglich ist, ist aber auch datenschutzrechtlich erlaubt.

IISlogs

Die Protokolldateien des Webservers können ebenfalls weiterhelfen. Die Logfiles erfüllen gleich drei Dinge:

  • Funktionsweise
    Zum einen belegen die IIS-Logdateien die Funktionsweise des Active-ServerSync. Man sieht genau den Zugriff durch den Client und dann die Folgezugriffe durch MOBSYNC.DLL auf das virtuelle Verzeichnis /exchange.
  • Fehlersuche
    Wenn ActiveSync nicht funktioniert, dann ist der Blick in die Protokolldateien ein effektives Mittel, etwaige Fehler zu finden oder zumindest einzukreisen.
  • Nutzungsverhalten
    Aber am wichtigsten sind die Daten für eine spätere Auswertung der Zugriffe. Der Webserver protokolliert Datum, Zeit, Benutzername und die übertragenen Bytes für spätere Analysen.

Hier eine verkürzte Protokolldatei:

09:57:27 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=40279401003030&DeviceType=PocketPC&Cmd=FolderSync 443
09:57:31 GET /Exchange/fcarius/NON_IPM_SUBTREE/Microsoft-Server-ActiveSync/PocketPC/40279401/09df746fd78d - 80 401
09:57:31 GET /Exchange/fcarius/NON_IPM_SUBTREE/Microsoft-Server-ActiveSync/PocketPC/40279401/09df746fd78d - 80 200
09:57:31 SEARCH /Exchange/fcarius/ - 80 - 401 09:57:31 SEARCH /Exchange/fcarius/ - 80 MSXFAQ\fcarius 07
09:57:31 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=40279401003030&DeviceType=PocketPC&Cmd=GetItemEstimate 443 200
09:57:34 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=40279401003030&DeviceType=PocketPC&Cmd=Sync 443 200
09:57:38 X-MS-ENUMATTS /Exchange/fcarius/Posteingang/Betreff1.EML - 80 MSXFAQ\fcarius 207 0
09:57:38 X-MS-ENUMATTS /Exchange/fcarius/Posteingang/Betreff2.EML - 80 MSXFAQ\fcarius 207 0
09:57:38 PUT /Exchange/fcarius/NON_IPM_SUBTREE/Microsoft-Server-ActiveSync/PocketPC/4027940100/f1a8177 - 80 - 1 401 1
09:57:38 PUT /Exchange/fcarius/NON_IPM_SUBTREE/Microsoft-Server-ActiveSync/PocketPC/4027940100/f1a8177 - 80 MSXFAQ\fcarius 200
09:57:38 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=4027940100&DeviceType=PocketPC&Cmd=Sync 443 netatwork\fcarius 200

Man sieht die Zugriffe per SSL (443) auf /Microsoft-Server-ActiveSync die dann zu einem Zugriff auf /exchange führen. Hierzu müssen Sie wissen, das OMA nichts anderes ist als OWA mit einer Filter-DLL. Der OMA-Client greift auf das virtuelle Verzeichnis Microsoft-Server-ActiveSync zu. Dort ist die MASSYNC.DLL eingebunden, die jede Anfrage quasi an OWA weiterleitet. MASSYNC.DLl nutzt den normalen OWA-Zugriff, um selbst an die Daten im Postfach zu kommen und Sie dem Client zuzuleiten. Insofern sehen Sie im IISLog sowohl die Zugriff auf Microsoft-Server-ActiveSync" als auch die Zugriffe auf /exchange.

Damit treffen natürlich auch alle Einschränkungen von OWA bezüglich der Nutzung von "/exchange" zu. Prüfen Sie auch hier die Empfängerrichtlinien und das die Benutzer eine Mailadresse der Domäne haben, die hinter "/exchange" verbunden ist. Alternativ kann OMA umkonfiguriert werden, dass ein anderes virtuelles Verzeichnis genutzt wird.

Für die Auswertung hingegen fände ich folgende Informationen sehr hilfreich:

  • Wie oft..
    .. nutzen die Anwender überhaupt Active ServerSync
  • Wie viel Bytes ..
    .. werden pro Benutzer übertragen. So erhalten Sie eine Übersicht über die zu erwartenden Kosten
  • Verteilung der Benutzer
    Wie ist das Verhalten der Anwender? ist der Server nicht überlastet oder sind genug Reserven
  • Woher ...
    ... kommen die Anfragen. Anhand der IP-Adresse kann in etwa der Ort und der Zugriffsweg ermittelt werden. Nutzen die Anwender GPRS oder auch öffentliche WIFI-Zugänge oder eine VPN-Verbindung.
  • Fehlermeldungen
    Wie oft kommen Fehlermeldungen und wenn ja, welche ?.

Da es sich um einfache IIS-Logdateien handelt, können Sie jede beliebige Anwendung nutzen, die ihnen die Auswertung erlaubt. Sie müssen nur die URLs filtern, die ein "POST /Microsoft-Server-ActiveSync" enthalten.

Detaillierte Auswertungen mit Server ActiveSync

Auf dem Blog http://msexchangeteam.com//archive/2005/03/28/403047.aspx haben Max Ciccotosto und Selva Nalliah mittlerweile noch weitere Details des IISLogs beschrieben. Dort steht z.B., dass Exchange Server ActiveSync das IISLog um weitere Felder erweitert. Ein normaler Eintrag sieht z.B.: wie folgt aus:

2004-12-21 11:20:41 192.168.100.10 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=8097xxxx173&DeviceType=PocketPC&Cmd=FolderSync&
Log=V2TEmSSC:0A0C0D0FS:0A0C0D0SP:1C11I9318S138444R 443 netatwork\fcarius 192.168.100.12 Microsoft-PocketPC/3.0 200 0 0 496 495

Interessant an dieser Zeile ist der Bereich der hinter "&Log" steht. Diese Information enthält weitere Informationen zur Aktion. Die folgenden Informationen sind aus dem BLOG übernommen und übersetzt.

&Log=V[Protocol Version]T[Folder DataType]S[Sync Type]C:#A#C#D#FS:#A#C#DP:#C#I#S#R
Kürzel Funktion Details

V

Version der Anforderung

1 bedeutet Version 1.0
2 bedeutet Version 2.0
3 bedeutet Version 2.1
4 = Version 4.0 (Windows Mobile mit MSFP ?)
NA bedeutet keine weitere Informationen

T

Typ der abzugleichenden Daten

Em = E-mail
Co = Contacts
Ca = Calendar
Ta = Tasks (Seit Windows Mobile 5)
NA für none

S

Typ der Aktion

F = Erstreplikation (First) (Tritt nur ganz am Anfang einmalig auf)
S = normale Synchronisation (
R = Recovery sync (Erneute Anforderung da Daten verloren wurden)
N = kein Synchronisationsbefehl

C

Statistiken des Clients

A = Anzahl der Objekte, die ein Client hinzugefügt hat (Add)
C = Anzahl der Objekte, die ein Client geändert hat (Change)
D = Anzahl der Objekte, die ein Client gelöscht hat (Delete)
F = Anzahl der Objekte, die ein Client geholt hat (Fetch)

S

Statistiken des Server

A = Anzahl der Objekte, die ein Server hinzugefügt hat (Add)
C = Anzahl der Objekte, die ein Server geändert hat (Change)
D = Anzahl der Objekte, die ein Server gelöscht hat (Delete)
S = Anzahl der Objekte, die ein Server gelöscht hat (Softdelete)

P

Performance Counter

C = Anzahl der Verbindungen zum Exchange Server
I = Anzahl der of I/Os zu Exchange
S = Anzahl der an Exchange gesendeten Bytes
R = Anzahl der von Exchange empfangenen Bytes

Das Beispiel von meinem PocketPC bedeutet daher

Log=V2TEmSSC:0A0C0D0FS:0A0C0D0SP:1C11I9318S138444R
  • Protokoll Version 2 wird genutzt.
  • Mails (Em) werden im Rahmen einer normalen (S) Synchronisation geändert (C)
  • Client Statistiken
    0 Add
    0 Change
    0 Delete
    0 Fetch
  • Server Statistiken
    0 Add
    0 Change
    0 Delete
    0 SoftDelete
  • Performance Counter
    1 Connection zum Server
    11 I/Os
    9318 gesendete Bytes
    38444 empfangene Bytes

Achtung: Seit Windows Mobile 5 und MSFP gibt es weitere Counter. Hier ein Auszug alt und Neu
Log=V4TNASNC:0A0C0D0FS:0A0C0D0SP:2C16I20460S333274R
Log=V4TNASNC:0A0C0D0FS:0A0C0D0SP:2C16I20460S333274R0S0L480H0P
Was die zusätzlichen Werte S L H und P bedeuten, kann ich noch nicht sagen.

Ich kann jetzt nur mal davon ausgehen, dass Exchange und mein PDA hier gewusst haben, was das soll. Ich tippe auf eine Fortsetzung einer bestehenden Kommunikation für eine größere Mail. Leider sind die beiden uns ein VB-Skript schuldig geblieben, was die Daten gleich entsprechend auswertet.

Weitere Links