DevTrain

Autor: Hannes Preishuber

Benutzertracking mit Bordmitteln-Die Auswertung

Die grafische Auswertung von Benutzergriffen erfordert zunächst eine mathematische.Im ersten Teil wurden die Daten in eine Access Tabelle importiert. Zwei Dinge blieben dabei unberücksichtigt.

  1. Uhrzeit
  2. lokales Subnetz

Die Uhrzeit in den Logfiles entspricht der GMT (Greenwich middle Time). Hier ist eine Stunde Zeitverschiebung einzukalkulieren. Wenn Sommer ist, kommt noch eine Stunde dazu. Also in Summe +2.
Weiters soll der lokale Traffic meistens nicht berücksichtigt werden. Also sollten alle IP Adressen aus dem lokalen Subnetz exkludiert werden.
Dies kann beim Import oder auch erst jetzt bei den Abfragen geschehen.

Nun haben wir also unsere Daten ( viele 1000 Datensätze) in der Tabelle. Mit SQL kann nun komfortabel die Auswertung gefahren werden. Zunächst einmal interessieren uns die Top 10 Seiten. Also die Seiten die am häufigsten aufgerufen wurden. Dazu verwenden wir eine Gruppierung die einen Zahler mitfuhrt. Damit nur die 10 besten angezeigt werden schränken wir die Rückgabe ein. Um die Sortierung hinzubekommen habe ich ein weiteres Select auf die Ergebnismenge gewählt.
Select top 10 * from
(SELECT Count(import1.request) AS Zugriffe, import1.request
FROM import1
GROUP BY import1.request ) order by zugriffe desc

Das Ergebnis könnte so aussehen

Zugriffe request
85 /_ScriptLibrary/rs.htm
32 /_ScriptLibrary/RSProxy.class
13 /_ScriptLibrary/RSProxyBeanInfo.class
20 /index.htm
9 /_vti_bin/shtml.dll
4 /_vti_bin/_vti_adm/admin.dll
4 /
3 /_vti_bin/_vti_aut/author.dll
2 /_scriptlibrary/samples
2 /_scriptlibrary/samples/simple.htm

Die Analyse sagt uns, das wahrscheinlich 4+20 Benutzer die Site verwendet haben. Der Einstiegspunkt ist meist ein / oder eine Index.htm. Die weiteren Zugriffe resultieren aus der Nutzung der Seite.

Als nächstes wollen wir wissen wie viele Hits per Tag im letzten Monat waren
SELECT count([datum]) AS Hits, DAY([Datum]) AS Tag
FROM import1
WHERE Month(datum)=8 and Year(datum)=2001
GROUP BY DAY([Datum]);

Das war noch einfach. Die nächste Aufgabe ist es die Zugriffe über die 24 Stunden des Tages auszuwerten. Zeitraum is ein Monat. Da das Datum aber im DateTime Format vorliegt, kann man nicht direkt gruppieren, sondern muss per Format arbeiten
SELECT count([datum]) AS Hits, Hour([Datum]) AS Stunde
FROM import1
WHERE Format(datum,"MMYYYY")="082001"
GROUP BY Hour([Datum]);

Jetzt wird es fast schon langweilig, das gleiche für den Tag.
SELECT count([datum]) AS Hits, Hour([Datum]) AS Stunde
FROM import1
WHERE Format(datum,"DDMMYYYY")="06082001"
GROUP BY Hour([Datum]);

Natürlich lassen sich so auch IP Adressen oder spezielle Key Wörter im Querystring abfragen.

Durch verwenden eines SQL Servers und/oder Indizes kann die Abfragegeschwindigkeit nochmals drastisch gesteigert werden.

Da die Anmeldung bei diesem Webserver auf Anonym gestellt war, sind keine Benutzernamen zu erkennen. Durch eine Query auf den DHCP per ADSI ließe sich der Computername noch dazu "joinen".

Im nächsten Schritt gehts zur Darstellung. Am einfachsten sind Tables um die Werte formatiert auszugeben. Für verspielte stehen auch Grafiken zur Verfügung. Dies kann per Pixel und Dehnung oder den Excel Chart Komponenten erfolgen. Dazu gibt's bereits einige Artikel hier auf www.devtrain.de

Für Anregungen oder Fragen stehe ich wie immer im Forum zur Verfügung.
PS: Wenn jemand seine fertige Lösung posten will,


Erfasst am: 08.08.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=513
© Copyright 2003 ppedv AG - http://www.ppedv.de