Re: Echtzeit-Logfileanalyse
On Sunday 18 February 2007 12:36, Andre Bischof wrote:
> Hallo zusammen,
>
> [...]
>
> Ich denke eher an einen Mechanismus der vom Prinzip her eher sowas wie
> "tail -F apache.log |grep %Benutzer%" macht.
>
> *seufz*, ich weiß nicht ob einer versteht was mir vorschwebt oder ob ihr
> das unsinnig findet, aber vielleicht kennt ja jemand sowas? Oder hat die
> richtigen Suchbegriffe für mich, denn Google überflutet mich leider bei
> Begriffen wie Apache, Logfile, Echtzeit, Analyse etc.
>
Also ich versteh dich jetzt so, dass du grade keine Echtzeit willst -->
was du willst, ist Logfileanalyse, Web Usage Mining, o.ä. Nimm WUMprep,
http://sourceforge.net/projects/hypknowsys/, eine Perl-Script-Suite für
Logfileanalyse. Das ist insb. gut für Sessionizing (=die Usersessions
definieren), Robots rausschmeißen, gif/jpeg etc. rausschmeißen (aber noch
vieles mehr)
Außerdem kannst du mit grep/awk am rawlog ne Menge machen. Nur mal so als
Beispiel:
grep google your_log |awk 'BEGIN {FS="q="} {print $2}' |awk '{print $1}'
>my_searchwords
zeigt dir die Suchwörter, die requests von denen
grep google your_log |awk '{print $11, "->", $7}' >my_requests
(wenn du vorher Googlebots rausgeschmissen hast)
Jetzt willst du wissen, was ein bestimmter User (IP), der mit einem
bestimmten Suchwort gekommen ist, weiter macht:
---schnipp----
#! /bin/bash
grep searchword your_log.sess.nobots.clean |awk '{print $1}' |sort
-u >search.log #die IP von dem, dessen Suchwort dich interessiert
for i in `cat search.log`; do
echo -n "$i: "
grep "$i" your_log.sess.nobots.clean
done >search1.log
---schnapp---
sess.nobots.clean kommt in dem Beispiel von WUMprep - .sess =
gesessionized, nobots = no bots ;-), clean = no gif/jpegs
Beim Nobot-Script, detectRobots.pl, in WUMprep musst du wahrscheinlich ein
bisschen nacharbeiten:
grep bot your_log |awk "{print "robot-host: ", $1}" |sort -u >>indexers.lst
(indexers.lst enthält User-agents von "known bots" - aber Vorsicht: mit
grep bot kannst du natürlich auch sowas wie angebot.html matchen, also
vielleicht vorher in z.B. bot_test schreiben und nachgucken, ob da auch
nichts erwünschtes gematcht wird (oder awk '{print $12, $13}' vors grep -
musst du ein bisschen rumprobieren)
HTH,
Gebhard
Reply to: