LogParser

Sehr interessantes AdOn: LogParser Studio
http://blogs.technet.com/b/exchange/archive/2013/06/17/log-parser-studio-2-2-is-now-available.aspx
http://blogs.technet.com/b/exchange/archive/2012/03/07/introducing-log-parser-studio.aspx

Mit dem LogParser stellt Microsoft ein sehr mächtiges Werkzeug bereit, was sich aber erst auf den zweiten Blick erschließt. All zu viele Administratoren scheuen den Zugriff auf eine Kommandozeile, die Eingabe von umfangreichen Kommandozeilen oder SQL-Statements oder gar das Schreiben eigener Skripte und DLLs. Auch wenn das gar nicht schwer ist, so kann LogParser auch ohne umfangreiche Entwicklung genutzt werden. Microsoft liefert ausreichend Beispiele mit, die leicht auf eigene Bedürfnisse angepasst werden können. Dann hingegen können sie z.B.:

  • IIS-Logs
    Eine Suche auf "verdächtige" URLs (z.B. MSADC) und eine eventuelle Häufung sind einfach zu ermitteln
  • EVENTLOG
    Sie können mit LogParser auch das Eventlog als Quelle nutzen und gezielt  bestimmte EventIDs oder Quellen und Meldungen ausgeben lassen. Dies ist besonders hilfreich, wenn Sie keine Überwachungssoftware wie MOM2005 o.ä. einsetzen.
  • CSV-Dateien
    LogParser kann aber auch fast alle anderen tabellarischen Datenquellen als Datei einlesen und auswerten
  • Und viele mehr

Sehr oft hilft LogParser damit, eigene VBSkripte zum Parsen verschiedener Textdateien gänzlich zu ersetzen. Allerdings ist der Einsatz aufgrund der umfangreichen Funktion nicht gerade als "einfach" anzusehen, zumal die Steuerung über Kommandozeilen und Skriptaufrufe erfolgt.

Log Parser
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

LogParser EXE

Die meisten werden LogParser als Kommandozeile einsetzen, d.h. aus einer DOS-Box aufrufen und deren bestehende Protokolldateien laufen lassen. Über die Kommandozeile werden die Parameter angegeben

  • Parameter 1: -i:Inputformat
    Format der Eingabe. Dies kann z.B. sein:
    EVT = Eventlog, ADS = LDAP, IIS = Protokolle des Webserver, REG = Registry, NETMON = Netzwerkmonitor und einige mehr.
  • Parameter 2: (Optional) Steuerung der Eingabe
    z.B.: das Trennzeichen einer Texteingabedatei
  • Parameter 3: -o:Output Format
    CSV = Kommaseparierte Datei
    CHART = grafische Aufbereitung als GIF-Bild
    SYSLOG, SQL, IIS, XML und einige andere.
  • Parameter 4: optionale Parameter für die Ausgabe
    z.B.: das Trennzeichen einer CSV-Datei
  • Parameter 5: Abfrage
    Hier steckt sicher dann dass "Know-how" eine Abfrage zu finden, die ihre Daten entsprechend aufbereitet

Durch die Nutzung als Kommandozeile eignet sich LogParser Natürlich wunderbar für den regelmäßigen Start über den Microsoft Taskplaner zur Erzeugung von konsolidierten Daten. Wer braucht heute schon bei einem Webserver im Protokoll die gesamten Abrufe der Bilder, Stylesheets etc. Diese könnten durch Logparser einfach weggefiltert bzw. durch eine Summenzeile ersetzt werden.

LogParser COM-Objekt

Wenn Sie selbst programmieren, dann können Sie die gleichen Funktionen auch über das ebenfalls mit installierte COM-Objekt aus ihren Programmen nutzen: Im Object Browser sieht dies z.B. wie folgt aus:


(Erstellt mit dem Object Browser von Visual Basic 2005 Express)

Es gib ein Objekt mit dem Namen "MSUtil.LogQuery", welches Sie instanziieren und mit den Parametern für die Eingabe und Ausgeben (Ebenfalls Objekte) füttern, ehe Sie am Ende dann die "ExecuteBatch"-Methode aufrufen. Beispiele dazu finden Sie in Hilfe von Logparser (c:\programme\logparser 2.2\Logparser.chm)

Logparser und SQL

Manchmal sind die Daten aber auch so umfangreich und sollten anders weiter verarbeitet werde, So dass eine interaktive Auswertung mit Logparser nicht weiter hilft. Der Weg zur Ablage der Daten in einer SQL-Datenbank ist gefordert. Auch hier kann Logparser unterstützt. Er kann nämlich dazu genutzt werden, die CSV-Dateien einzulesen, eine Vorfilterung und Verarbeitung vorzunehmen aber dann die Ausgaben in eine SQL-Datenbank zu exportieren.

Das geht sehr einfach per Kommandozeile. Zeile wurde zur besseren Lesbarkeit umgebrochen:

logparser.exe "SELECT * INTO iisLogs FROM c:\webserver\logs\*.log"
   -i:iisw3c
   -o:SQL
   -server:localhost
   -database:IISLogs
   -Username:sa
   -password:password
   -createTable: ON
   -cleartable: ON
   transactionRowCount:-1

Natürlich können Sie auch hier weitere Bearbeitungsschritte addieren. Die Ablage in SQL hat insbesondere den Vorteil, dass Sie z.B. mit SQL Reporting Services, Stored Procedures etc. sehr flexibel individuelle Reports erstellen können oder den Anwendern oder anderen Personen einen einfachen Zugang schaffen können.

Es gibt aber auch einige 3rd Party Produkte, die genau das schon machen. Schauen Sie also zuerst einmal nach, was der Markt hergibt, ehe Sie mit dem Programmieren beginnen.

Logparser Studio

Die Kommandozeilen und SQL-Statements sind nicht jedermanns Sache. Aber mit dem Logparser Studio gibt es eine sehr elegante Möglichkeit selbst verschiedene Datenquellen auszuwerten. Sie laden die aktuelle Version einfach herunter und packen diese aus:

Download
http://gallery.technet.microsoft.com/Log-Parser-Studio-cd458765

In dem Verzeichnis befindet sich dann eine LPS.EXE zum Starten und zeigt ihnen die zur Verfügung stehenden Reports direkt an. Sie denke u.a. folgende Bereiche ab:

  • ActiveSync
  • EWS
  • OWA
  • RPCA
  • Eventlogmeldungen
  • NETLOGON Anmeldungen
  • Generische IIS Auswertungen
  • Messagetracking

Die Vordefinierten Reports sind in der Datei "LPSV2Library.XML" definiert. Die dazugehörige Beschreibung erspare ich ihnen. Auch so ist die Übersicht der Reports schon "Appetitanregung" genug. Die meisten Auswertungen sind für Exchange. Es gibt aber auch Beispiele für Windows Eventlogs

ActiveSync Proxy: Exchange 2013, Find OPTIONS requests with errors
ActiveSync Proxy: Find Field Names
ActiveSync Report
ActiveSync Report [Top 20]
ActiveSync: 500x HTTP /3 Minutes
ActiveSync: Apple Device/iOS Version Report
ActiveSync: Budget Report [100% Exceeded]
ActiveSync: Budget Report [75% Exceeded]
ActiveSync: Client Device Generated Protocol Commands
ActiveSync: Count all errors
ActiveSync: Count all Syncs per SyncKey
ActiveSync: Count all Syncs per SyncKey
ActiveSync: Count Syncs with SyncKey of Zero Per User
ActiveSync: Device Calendar requests
ActiveSync: Device Query
ActiveSync: Devices Report [Top 20 Devices]
ActiveSync: Devices Report [Top 20 Devices] Specific Device
ActiveSync: Errors by User to CSV
ActiveSync: Exchange 2013 Active Sync Throttling Report - Count Users over budget.
ActiveSync: Exchange 2013 ActiveSync Throttling Report
ActiveSync: Exchange 2013 ActiveSync Throttling Report - Negative Balance
ActiveSync: Exchange 2013 ActiveSync User Performance Report
ActiveSync: Exchange 2013 Device query
ActiveSync: Find All Non-Zero Sync Keys Per User
ActiveSync: Find All SyncKeys Per User Sorted By User
ActiveSync: Find All SyncKeys Per User/Chronological Order
ActiveSync: Find All Zero SyncKeys Per User (Expanded)
ActiveSync: High CPU caused by Mobile Devices
ActiveSync: High RPC counts or latency
ActiveSync: HTTP 500 /Hour
ActiveSync: HTTP 503 1/2 hour
ActiveSync: iPhone Report by User/Hits/Device
ActiveSync: iPhone Top 20 Report by User/Hits/Device
ActiveSync: Requests > 8 Seconds
ActiveSync: Requests with ActiveSync errors
ActiveSync: SendMail
ActiveSync: Status Code Report
ActiveSync: Status Code Report II
ActiveSync: Top 100 Users per Device
ActiveSync: Top 3 ActiveSync Users
ActiveSync: Unique Devices by # Hits
ActiveSync: User Bandwidth > 10MB
ActiveSync: User Bandwidth Top 100
ActiveSync: User by Proxy Error
Authentication Failures
Autodiscover Proxy: Exchange 2013 requests per hour per User
Autodiscover: Slow Requests by User
Average Bandwidth per 1/2 Hour
Avg Response for a User
Avg Response for all Users
CAS: All Requests with more than one hundred 500 errors.
CAS-CAS Proxy
ECP: by Username [CAS Proxy Target]
ECP: Request by Username [CAS INTERNET]
Error Report by Status
EVENTS: Count Application Errors per Hour
EVENTS: Count Application Log Entries
EVENTS: Count Errors and Warnings Every 24 hours
EVENTS: Find All Remote Logons
EVENTS: Find Event Log Field Names
Events: Query an exported event log file.
EVENTS: Sample
EVENTS: Top 1000 Errors and Warnings
EWS: [500 Errors]
EWS: 500 Errors [CSV]
EWS: All 500s per User, per 15 Minute interval between two times
EWS: Average Bandwidth Second/Hour
EWS: Average Response Time 1/2 Hour
EWS: BESAdmin Impersonated Login Report [CSV]
EWS: Budget Report [100% Exceeded]
EWS: Budget Report [75% Exceeded]
EWS: Count requests per User per 15 minute interval  between two times
EWS: Count Users with 503 errors
EWS: Exchange 2013 - TOP 1000 EWS requests by CPU Used
EWS: Exchange 2013 EWS CPU usage per 5 minute interval.
EWS: Failed SoapActions by Action/Item/User/Error
EWS: Find all EWS requests between two timeframes excluding 401s
EWS: GetOOFSettings Report
EWS: HTTP 500 Errors per Hour per User
EWS: HTTP 500 Errors per Hour w/Description
EWS: PROXY  (500 Errors)
EWS: Requests Every 3 Minutes
EWS: Requests Every Hour
EWS: Requests per Hour
EWS: SOAP Report by SoapAction
EWS: SoapActions by Action/Item/User
EWS: SoapActions by Action/Item/User [CSV]
EWS: SoapActions by Action/Item/User [Failures]
EWS: Top 20 EWS Users
EWS: Top 20 EWS Users - Min/Max/Avg
EWS: Top 20 EWS Users CSV
EWS: Top 5 EWS Users
ExRCA: Requests
EXRPC: Find Exchange RPC Client Access Log Field Names
EXRPC: Find requests with rpc-status or failures > 0
EXSMTP: Sample SmtpSend Query
FileSystem: Sample query lists properties for all LPS files.
Find ActiveSync User
Find EWS Delays by User [CSV]
Find EWS Users w/TimeOutExpired Errors
FS: IIS Log File Sizes Last 10 Days
HTTPERR: Abandoned Requests
HTTPERR: Abandoned Requests - Specific AppPool
HTTPERR: AppPool Crashes per 1/2 Hour
HTTPERR: Client_Reset Report
HTTPERR: Common Http.Sys Errors
HTTPERR: Connections_Refused
HTTPERR: Find App Pool Crashes
HTTPERR: Queue_Full
HTTPERR: Timer_AppPool
IIS: All Requests, Specific User [CSV]
IIS: Count all Web Service 500 Errors by URI
IIS: HTTP 401 by User [CSV]
IIS: HTTP 503 Errors [CSV]
IIS: HTTP Status Codes by Count
IIS: Request per Hour
IIS: Request per Hour by Bytes Sent
IIS: Status/SubStatus Report
IIS: Top 20 HTTP Verbs
IIS: Top 20 URIs
IIS: Top 25 Slow URLs
IIS: User-Agent Report
IIS: VDir Hits by IP
IIS: Win32 Error Report
LPS: Search Library XML
Message Tracking: Exchange 2010 - Delivery Failures by Percentage
Message Tracking: Exchange 2010 - Failures by sender/receiver/direction/status
Message Tracking: Exchange 2010 - Failures per Failure/Direction
Message Tracking: Exchange 2010 - Mesage Subject by Count
Message Tracking: Exchange 2010 - Messages in pipeline per 1/2 hour
Message Tracking: Exchange 2010 - Messages Received by Count
Message Tracking: Exchange 2010 - Top Talkers by Sender/Send Source
Message Tracking: Exchange 2010 - Top Ten Senders
Message Tracking: Exchange 2010 -Top Talkers by percentage
Message Tracking: Exchange 2010 -Top Talkers by Sender
Message Tracking: Track Message by Subject Text
NETLOGON: Count all [Critical] Errors
NETLOGON: Count lockout errors.
NETLOGON: Find all [Critical] Errors
NETLOGON: Find all can't allocate API slot errors II
NETLOGON: Find all entries that don't return zero (success) EXPERIMENTAL
NETLOGON: Find can't allocate client API slot errors
NETLOGON: Find failed password attempts
NETLOGON: Find locked out accounts
NETMON: Bytes Per Minute
OLA: RPC/HTTP Users by Requests
OWA: Budget Report [100% Exceeded]
OWA: Budget Report [75% Exceeded]
OWA: Budget Report [CSV]
OWA: Budget Report [Top 100 Users]
OWA: Exchange 2013 ActiveSync User Report
OWA: Exchange 2013 OWA action report by duration/User.
OWA: Exchange 2013 Throttling Report
OWA: Hits by User/page requested
OWA: Latency Report  [Top 100]
OWA: Latency Report  [Top 20]
OWA: Latency Report [CSV]
OWA: Status Codes By VDir
OWA: Status Codes By VDir [CSV]
OWA: Top 20 OWA Users
Page Hits per Single IP
Password Error Report
Powershell: Find 500 Errros
Powershell: Hits (HTTP 500)
REGISTRY: Find Registry Query Field Names
REGISTRY: Writes Since Previous Date
RPCA: Breakdown of MAPI clients by percentage
RPCA: Breakdown of MAPI clients by percentage/version
RPCA: Client connect/disconnect report by hour
RPCA: Connect/Disconnect Report (10 Second Intervals)
RPCA: Count RPC backoff errors per User
RPCA: Count Various Errors
RPCA: MAPI client report by percentage
RPCA: Timed ROPs Report
TextLine: Download a web page from the Internet
TextLine: Sample Batch Query 1
TextLine: Sample Batch Query 2
Throttling: Find Delays
XML: Books Sample 1
XML: Books Sample 2

Im Internet gibt es auch jede Menge weiterführende Informationen:

Es gibt aber noch andere Programme, die sich auf die COM-API von Logparser stützen

Beispiele

Zur besseren Lesbarkeit sind die Zeilen umgebrochen. Sie müssen natürlich "am Stück" eingegeben werden.

Benutzer von OWA

(Quelle: TechNet) (Zur Lesbarkeit umgebrochen

logparser.exe "SELECT TO_STRING(time, 'HH') AS Hour, COUNT(*) AS Hits INTO hitPerSecond.jpg 
                  FROM ex*.log GROUP BY Hour 
                  ORDER BY Hour ASC" 
              -i:IISW3C 
              -o:CHART -chartType:ColumnClustered -chartTitle:"HoURLy Hits" 
              -groupSize:420x280

Liste der OWA Anwender

logparser.exe 
    "SELECT cs-Username AS UserID,Count(*)
     FROM '[LOGFILEPATH]'
     WHERE cs-uri-stem LIKE '%owa%' AND UserID is not null
     GROUP BY UserID
     ORDER BY COUNT(*) DESC "

Bandbreitennutzung durch OWA

logparser file:QDailyHits.sql -i:IISW3C -o:CHART -chartType:ColumnClustered -chartTitle:"owa.msxfaq.de - Volumen in KB pro Stunde" -groupSize:420x280

Inhalt von QDailyHits.sql:

SELECT
 TO_STRING(time, 'HH') AS Hour,
 DIV(Sum(cs-bytes),1024) AS Incoming(K),
 DIV(Sum(sc-bytes),1024) AS Outgoing(K)
INTO %chartname%
FROM %source%
GROUP BY Hour

Auswertung von SMTP-Logs und Mssagetracking Logs

LogParser kann auch die Exchange Logs und

LogParser.exe"
   -i:W3C
   -o:TSV
     "select TO_TIMESTAMP( STRCAT( '2006-10-15', STRCAT(' ', STRREV( SUB( STRREV( TIME ) , 'TMG ') ))),'yyyy- MM-dd h:m:s') AS DateTime,
      Recipient-Address AS RcptAddress, MSGID, total-bytes AS TotalBytes,
      Number-Recipients AS NumRcpts, Sender-Address AS Sender 
     FROM c:\Programme\exchsrvr\log\20061015.log
     TO test.tab
     WHERE recipient-Address
     LIKE '%%@%%'
     GROUP BY DateTime, MSGID, Recipient-Address, total-bytes, Number-Recipients, Sender-Address"
  -filemode:1

Auswertung von Messagetracking für Statistiken

logparser.exe
   "SELECT TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'T'),
   'yyyy-MM-dd')) AS Date,
   COUNT(*) AS Hits
   from *.log
   where (event-id='RECEIVE')
   GROUP BY Date
   ORDER BY Date ASC"
  -i:CSV
  -nSkipLines:4
  -rtp:-1

Auswertung der Nutzung von ActiveSync

Die Auswertung von ActiveSync ist sicher besonders interessant, da so eine Übersicht der Nutzung (und auch zu erwartenden Kosten) zu erhalten ist.

Auf diesen Webseiten finden Sie sehr viele Beispiele. Besonders interessant ist hierbei eine DLL "lpeas.dll ", die bei der Auswertung von IIS_Logs die Besonderheiten von EAS genauer auseinander nimmt.

Weitere Links