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

Im Netz 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

Benutzer von OWA

(Quelle: TechNet)

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

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