CAS-Logging

Seit Exchange 2010 ist die Client Access Rolle die zentrale Drehscheibe für die Zugriff von allen Clients auf Postfächer. Nur der Zugriff auf öffentliche Ordner geht noch am CAS bzw. CASArray vorbei. Sofern der Zugriff per ActiveSync, OWA, EWS oder auch RPC/HTTP erfolgt, ist immer der IIS mit im Spiel, welcher von sich aus schon sehr umfangreiche Protokollfunktionen hat. Das Auswerten der HTTP-Logs soll aber nicht Thema dieser Seite sein.

Auch die eigentlich CAS-Rolle des Exchange Servers schreibt von sich aus verschiedene Protokolldateien mit, von denen der "RPC Client Access" sicher das interessanteste Log sein dürfte. Es findet sich im Logging-Verzeichnis des CAS-Servers.

Interessant sind hier der Inhalt aus "RPC Client Access" und "AddressBook Service", da sie als Administrator sonst kaum Einblick in die Zugriffe per RPC erhalten. Programm wie ExInsight funktionieren leider nicht mehr mit den aktuellen Exchange Versionen und die RPC-Encryption verhindert den ein oder anderen Einblick mit WireShark

RCA Log

Interessant ist bei dem Logging des CAS die Protokollierung des RPC-Zugriffs. Per Default liegen Die Daten in "C:\Program Files\Microsoft\Exchange Server\V14\Logging\RPC Client Access" und werden jeden nach 30 Tagen gelöscht.

Der Aufbau ähnelt den IISLogs mit Kommentaren am Anfang und einem Komma als Trennzeichen:

Sie können diese Daten zwar per Notepad oder notfalls auch Excel auslesen, aber eleganter ist auch hier die Verarbeitung per PowerShell. Hier ein Beispiel:

Import-Csv `
   -path .\RCA_20110510-1.LOG `
   -Delimiter "," `
   -Header "date-time","session-id","se
q-number","client-name","organization-info","client-software","client-software-v
ersion","client-mode","client-ip","server-ip","protocol","application-id","opera
tion","rpc-status","processing-time","operation-specific","failures"

Durch die Aufarbeitung mit Import-CSV erhalten Sie für jede Zeile einen Datensatz mit den Properties:

Hier noch mal in textueller Form

date-time               : 2011-05-10T21:35:54.029Z
session-id              : 8
seq-number              : 12
client-name             : /o=E2010Org/ou=Exchange Administrative Group (FYDIBOH
                          F23SPDLT)/cn=Recipients/cn=user1
organization-info       :
client-software         : OUTLOOK.EXE
client-software-version : 14.0.4760.1000
client-mode             : Classic
client-ip               :
server-ip               :
protocol                : ncacn_ip_tcp
application-id          :
operation               : OwnerLogon
rpc-status              : 0
processing-time         : 00:00:00.0312500
operation-specific      : Logon: Owner, /o=E2010Org/ou=Exchange Administrative
                          Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=user1 in dat
                          abase MB1 last mounted on W2K8R2E2010.E2010.local at
                          4/5/2011 9:54:01 AM, currently Mounted; LogonId: 1
failures                :

Entsprechend sind natürlich Weiterverarbeitungen mit PowerShell sehr einfach möglich, z.B. die Gruppierung nach Outlook-Version oder ClientIP. Wenn Sie aber ihr System anschauen, dann werden Sie in der Regel KEINE ClientIP erkennen. Im Beispiel erkennen Sie aber, dass die Client und ServerIP nur beim ersten Eintrag zu einer Session protokolliert wird. Darauf müssen Sie bei Auswertungen natürlich Rücksicht nehmen.

Die Konfiguration der Protokollierung ist nicht per PowerShell erreichbar, sondern erfordert eine direkte Änderung der Datei "C:\Program Files\Microsoft\Exchange Server\V14\Bin\Microsoft.Exchange.RpcClientAccess.Service.exe.config":

By Default werden allerdings keine "Throtting"-Informationen und keine kompletten "ROPS" (Würde ich mit Remote Operations übersetzen) protokolliert.

Achtung
Diese zusätzlichen Optionen bewirken sehr viel mehr Loginformationen. Allerdings enthalten Sie keine Pfade oder Betreff-Informationen der Zugriffe auf Elemente. Sie eignen sich daher nicht für die Protokollierung der Zugriffe. Es sind "nur" RPC-Zugriffe.

Vergessen Sie bei Änderungen an diese Datei, dass Sie den Dienst "Microsoft Exchange RPC Client Access Service (MSExchangeRPC)" einmal durchstarten, damit die Einstellungen aktiv werden.

  • Get-RCALog
    Outlook Versionen und Clients aus den Exchange 2010 RCALogs auswerten

Address Book Log

Auch der Zugriff von Client auf den Exchange Addressbook Service wird in einer eigenen Protokollsammlung aufgeschrieben. Hier landen in einem vergleichbaren Format die Zugriffe der Clients. (Datei enthält umbrüche und gekürzten LegacyDN zur Lesbarkeit)

#Software: Microsoft Exchange
#Version: 14.01.0218.011
#Log-type: AddressBook Protocol Logs
#Date: 2011-05-24T19:56:59.320Z
#Fields: date-time,session-id,seq-number,client-name,organization-info,client-ip,server-ip,protocol,
      operation,rpc-status,processing-time,operation-specific,failures,authentication,delay
2011-05-24T19:56:59.320Z,6,0,/o=E.../cn=user1,,192.168.182.1,W2K8R2E2010,ncacn_ip_tcp,GetNewDSA,,31,Self,,Ntlm,

Auch hier ist die ClientIP, der Benutzername und die aufgerufene Funktion ersichtlich. Die Konfiguration erfolgt in der XML-Datei "C:\Program Files\Microsoft\Exchange Server\V14\Bin\microsoft.exchange.addressbook.service.exe.config". Hier ein Auszug meiner Muster-VM. Sie sehen gut, dass das Verzeichnis per Default maximal 1 GB groß werden darf und die Dateien alle 10 MB umgebrochen werden. Nach 720 Stunden (=30 Tage) werden die Dateien aber wieder gelöscht.

Get-LogonStatistics

Keine direkte Monitoring-Funktion des CAS-Servers ist die Ausgabe der gerade aktuell angemeldeten Benutzer am Postfachserver. Aber dennoch möchte ich dies nicht unterschlagen. Auch der Postfachserver führt eine Tabelle der aktuell angemeldeten Benutzer mit. Es sind zwar keine historische Daten, sondern eine Momentaufnahme, aber für die Fehlersuche und Analyse durchaus hilfreich.

Sie können die Ausgabe sowohl pro Benutzer als auch pro Server generieren

Get-LogonStatistics -Server mbserver | ft username,clientipaddress,clientmode,clientversion > clients.txt

get-logonstatistics -identity username

Über die Pipeline können Sie die gewünschten Daten natürlich weiter filtern und verarbeiten

Allerdings sind die Daten nicht immer hilfreich. Da der Zugriff hier über den Exchange CAS erfolgt, ist die Client-Version nicht aussagekräftig.. Auch wenn das Commandlet ein Feld "ClientIP" hat, so ist das Feld hier leer. Die Ursache ist darin begründet, dass Outlook diese IP-Adresse als Teil des RPC-Pakets an den Server senden muss und der Server nicht die IP-Adresse der TCP-Verbindung hier protokolliert.

Outlook übermittelt diese Information aber nicht automatisch, sondern diese Quelle muss auf dem Client erst freigeschaltet werden. Dies ist eine Einstellung in der Registrierung. Der relevanten Schlüssel ist:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\CancelRPC]
"EnablePerfTracking"=dword:00000028

Alternativ kann dies auch per Gruppenrichtlinien erfolgen.

HKCU\Software\Policies\Microsoft\Office\14.0\Outlook\CancelRPC\EnablePerfTracking:DWORD = 0x00000028

Eine passende ADM-Datei können Sie recht einfach erstellen. Siehe auch Gruppenrichtlinien)

Weitere Links