loganalyzer selber proggn

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von C:S, 09.03.2009.

  1. C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    Moin,
    ich will mir zwecks der Übung ein Loganalyzer tool selbst schreiben. Bin gerade am überlegen wie ich vorgehen soll, und würde gerne wissen was ihr davon haltet.

    Ich würde es so machen, dass das Tool die logfiles durchgeht (z.B. apache error log), und dann jedes Feld in eine Datenbank schreibt. Im Falle Apache würde ich dann IP, Fehlergrund, Useragent usw speichern. Später kann ich dann die Werte aus der Datenbank lesen und auswerten, je nachdem wie ichs grad brauch (html, text und so).

    Mir is klar dass das auf Dauer riesen Tabellen werden, aber auf Performance kommts ja auf erster Linie nicht an.

    Meint ihr das haut so hin? Oder habt ihr bessere Ideen?
    Gruß, CS
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 sim4000, 09.03.2009
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Mit welcher Sprache willst Du das denn bauen?
     
  4. C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    Hmm, das weiß ich noch nicht so genau, python oder c++, vll auch java. Mir gehts erstmal um die Struktur, und dann schau ich, welche Sprache sich so anbietet (wie gesagt, ich will hauptsächlich was bei lernen). Hab halt ziemlich viel Erfahrung im Webbereich, aber so mir "richtigen" Programmen habe ich noch nie soo viel zu tun gehabt.
     
  5. #4 bitmuncher, 09.03.2009
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Ich kann dir aus Erfahrung sagen, dass es mit SQL-Datenbanken jedenfalls nichts wird. Pro 4-5 Millionen Logeinträge brauchst du zum Parsen ca. 12-18 Stunden auf einem 2GHz-Rechner mit 2GB RAM. Daher... implementiere von Anfang an FAM in dein Tool, so dass sofort reagiert wird, wenn ein neuer Eintrag geschrieben wird und parse nicht via Cron o.ä. Mache also einen Daemon draus, der via FAM o.ä. dauerhaft die Logdateien überwacht und jeden Eintrag sofort auswertet. Solltest du statistische Berechnungen anstellen müssen, rechne mit jedem einzelnen Eintrag. Je mehr Einträge abgearbeitet werden müssen, umso länger dauert es. Ansonsten spar dir das Lesen und Schreiben von Werten aus dem Log in eine DB, sondern schreibe dein Tool lieber so, dass es die Logdatei wie eine DB handhabt (quasi die Log-Datei als Text-DB verwenden).

    Gerade bei Apache solltest du ausserdem drauf achten, dass du irgendwoher (z.B. aus der Konfiguration) das Log-Format ausliest, so dass dein Tool auch bei Änderungen des Log-Formats noch funktioniert.

    Bei den von dir genannten Sprachen würde ich Python bevorzugen, da es das schnellste und komfortabelste String-Handling von den drei hat. Ansonsten würde ich klar zu Perl raten. Nix geht über schnelle Perl-Regexen. ;)
     
  6. C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    okay, klingt schomal gut. Also sollte ich mir schonmal vorher gedanken machen welche Statistiken ich genau will, um diese dann immer gleich zu aktualisieren. Wobei ich dazu parallel ja die Sätze in die Datenbank einpfelegen kann, schadet ja nix. Vll ließe sich fürs Parsen auch was mit Indexen anfangen? Oder ich unterscheide die verschiedenen errors nochmal und hau die in verschiedene Tabellen, dadurch wirds auch schonmal überschaubarer.

    Das mit FAM ist ne gute Idee, da habe ich gar nicht dran gedacht (sondern an cron ;-))

    Wegen der Sprache, ich tendiere ja grad mehr zu java, gibts da konkret Gründe die dagegen sprechen?
    Gruß CS
     
  7. #6 bitmuncher, 09.03.2009
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Wenn du wirklich sauber Java codest, gibt's eigentlich nicht's, was dagegen spricht. Wichtig ist halt, dass du den Garbage-Collector ordentlich ausnutzt, damit der RAM-Verbrauch nicht zu hoch wird. Ich persönlich versuche ja Java immer zu vermeiden, wenn es um's String-Handling geht, aber das ist wohl eher Geschmackssache. ;)
     
  8. #7 bytepool, 09.03.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    jain, so etwas laesst sich prinzipiell natuerlich auch mit Java machen. Aber ich vertrete genau die gleiche Meinung wie bitmuncher, von den drei genannten Sprachen wuerde ich Python nehmen, und wenn ich die freie Wahl haette, wuerde es Perl werden.
    Im Allgemeinen mag ich Python viel lieber als Perl, aber Perl wurde genau fuer solche Zwecke entworfen und ist entsprechend gut in dem Bereich.

    Java dagegen ist vergleichsweise streng und ausfuehrlich, was in diesem Fall wohl eher hinderlich ist. Du wirst in Java mindestens das doppelte (vermutlich mehr) an Code brauchen als in Python oder Perl.

    mfg,
    bytepool
     
  9. C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    okay, also langsam fangt ihr an mich zu überzeugen^^ naja, perl hab ich zwar noch nix gemacht, aber so schwer kanns ja net sein :brav:
     
  10. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    also ich muss sagen, das ich gegen viele meinungen ein freund von java bin und auch gerne da projekte abwickle. Allerdings den verwendungszweck den du verfolgst, würde ich auch perl vorschlagen. Die arbeit mit zeichenketten ist perl sehr sehr schnell und auch sehr knapp gehalten. Vorallem kann es gut sein, das es schon libs oder ähnliches genau für diesen zweck, bei perl schon dabei sind oder sich installieren lassen.

    greetz
     
  11. #10 C:S, 10.03.2009
    Zuletzt bearbeitet: 10.03.2009
    C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    ja, okay, also dann werd ichs wohl mir perl machen. Hat sich auf jeden Fall schomal gelohnt euch zu Fragen ;-)
    Wenn jemand noch weitere Ideen hat, bitte posten :))
    Gruß, CS
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Woh, also bin beeindrukt, die Stringsachen gehen mit perl ja wirklich wie Butter...
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. #11 C:S, 11.03.2009
    Zuletzt bearbeitet: 11.03.2009
    C:S

    C:S Foren As

    Dabei seit:
    21.01.2009
    Beiträge:
    76
    Zustimmungen:
    0
    ok, bevor ich nen neuen Thread auf mache, wie wandel ichn in perl die Zeit ausm apache log (hh:mm:ss) in nen unixtimestamp um? soll ja iwie mit localtime gehen, aber google spuckt nix aus...
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    ah, okay, habs jetzt doch rausgefunden (um das Selbstgespräch perfekt zu machen...)
     
  14. #12 bitmuncher, 11.03.2009
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Dafür setzt man am Besten das Module Time::Local ein und verwendet die Funktion timelocal().

    Code:
    $time = timelocal($sec,$min,$hours,$mday,$mon,$year);
     
Thema:

loganalyzer selber proggn

Die Seite wird geladen...

loganalyzer selber proggn - Ähnliche Themen

  1. Selber kompilieren: Linux From Scratch 7.2 ist fertig

    Selber kompilieren: Linux From Scratch 7.2 ist fertig: Das Linux From Scratch-Projekt (LFS) hat seine gleichnamige Linux-Selbstbauanleitung in der Version 7.2 veröffentlicht. In LFS 7.2 wurden viele...
  2. centos 5.3 dns-server findet sich selber nicht

    centos 5.3 dns-server findet sich selber nicht: hi leutz, habe centos 5.3 als dns-server eingerichtet. Windows-Clients können mit nslookup den dns-server perfekt auflösen. Wenn ich auf dem...
  3. DEB-Pakete selber machen

    DEB-Pakete selber machen: Hi ich habe hier zwei Bash-Skripte, die in eine automatisierte Installation sollen. Auf Grund des Aufbaus dieser, kann ich die nicht einfach so...
  4. Mauspad selber bauen.

    Mauspad selber bauen.: Hey. Da mir google nicht viel half, wollte ich mal hier fragen :) Und zwar hab ich hier einige mauspads liegen...doch sind sie entweder...
  5. Selber Login für verschiedene Programme

    Selber Login für verschiedene Programme: Hi, ich habe vor an meinem kleinen Home-Projekt weiterzugehen (an insider: mit erhöhrten Sicherheitsmaßnahmen ^^). Aktivierte Sambauser...