Daiana Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 Hi, ich suche nach einem Script oder ähnlichem, um die Logfiles, die von Apache unter Linux geschrieben werden täglich rotieren zu lassen. Dazu muss ich sagen, dass ich so gut wie keine Ahnung davon habe. Hat da jemand schon Erfahrung gesammelt oder ein solches Script geschrieben? Danke im Vorraus, Daiana Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hWARS Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 hi ! da gibts 2 möglichkeiten: zum einen das "rotatelogs" von apache selbst, das ich allerdings nicht so gelungen finde, deswegen die 2. methode: ein shell skript: #!/bin/sh ############## #Apache rotatelog-skript ############## #Datum/Uhrzeit DATE=`date +%Y%m%d.%H%M%S` #Apache Verzeichnis DIR='/Pfad/zu/apache2' #Logdatei in Logdatei.Datum umbenennen mv $DIR/logs/access.log $DIR/logs/access.log.$DATE mv $DIR/logs/error.log $ROOTDIR/logs/error.log.$DATE #Apache neu starten $ROOTDIR/bin/apachectl graceful #kurz warten -> neue Logfiles werden erstellt sleep 900 #alte Logfiles packen gzip $ROOTDIR/logs/*.$DATE #EndOfFile also: zunächst werden die Logfiles umbenannt, dann apache neu gestartet, damit neue logfiles erstellt werden können. jetzt mußt du nur noch ein cron job einrichen, der dieses skript jeden tag durchführt ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Daiana Geschrieben 26. Januar 2004 Autor Teilen Geschrieben 26. Januar 2004 Danke schön. Probier ich mal aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 Original geschrieben von hWARS also: zunächst werden die Logfiles umbenannt, dann apache neu gestartet, damit neue logfiles erstellt werden können. Hallo, täglicher Neustart vom Apache ?!? Zum rumspielen ok, aber produktiv kommt das nicht ernsthaft in Betracht. Warum? - Man erreicht die Website nicht mehr (-> den User wirds freuen) - Aktive Sessions fliegen dir weg (-> den User wirds freuen) - Es kann sein aus Grund XY kommt der Apache nicht mehr hoch und man merkt es erst sehr spät (wenn z.B. das Logrotate nachts läuft ) - Was passiert mit den Logs zwischen dem mv und dem Neustart --> ab ins Nirvana - ... Kenne zwar das Logrotate von Apache nicht auswendig ( komme auch grad nicht auf die Website ?!?), aber normalerweise ist eine gut implementiere Lösung des Logrotates der Software besser, als sich selbst eine zu schnitzen, da das nicht so einfach ist wie man denkt (hab mich nämlich mal selber dran gemacht so etwas so implementieren und ich sag nur *uahhh*) cya alliagtor Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 Hook, kam gerade doch noch auf die Website vom Apache und die empfehlen tatsächlich die Methode mit dem restart ( http://httpd.apache.org/docs/logs.html#rotation), weil da angeblich keine Sessions wegfliegen. Hmm. Nun gut, dennoch würde ich das hier vorziehen: http://httpd.apache.org/docs/programs/rotatelogs.html cya alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hWARS Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Original geschrieben von alligator Hallo, täglicher Neustart vom Apache ?!? Zum rumspielen ok, aber produktiv kommt das nicht ernsthaft in Betracht. Warum? - Man erreicht die Website nicht mehr (-> den User wirds freuen) - Aktive Sessions fliegen dir weg (-> den User wirds freuen) - Es kann sein aus Grund XY kommt der Apache nicht mehr hoch und man merkt es erst sehr spät (wenn z.B. das Logrotate nachts läuft ) - Was passiert mit den Logs zwischen dem mv und dem Neustart --> ab ins Nirvana cya alliagtor moin ! ok, ich hätte noch ein paar anmerkungen dazuschreiben sollen, war ein fehler, also: -zum neustart / aktive sessions : durch apachectl graceful werden keine sessions mehr angenommen, die aktiven sessions werden aber auch nicht abgebrochen ! außerdem empfehle ich den neustart durch den cronjob nachts anzusetzen, denn ich glaube kaum, dass nachts viel los ist (es sei den es ist eine firma, die global vertreten ist, aber das glaube ich nicht) -apache fährt nicht mehr hoch: kann ein problem sein, wenn aber apache richtig installiert und konfiguriert wurde glaube ich kaum, dass das passiert; mir ist das auch noch nie passiert -Was passiert mit den Logs zwischen dem mv und dem Neustart --> ab ins Nirvana : nein, apache schreibt so lange in die logfiles, bis ein neustart erfolgt, und dann werden ja automatisch neue logfiles erstellt (habe das getestet). zur produktivität: ja ich weiss, dass ein täglicher neustart nicht gerade das gelbe vom ei ist, und in der produktion auch nicht unbedingt gemacht werden sollte... ZUSATZ ZUM SKRIPT: ich habe einen fehler gemacht, und zwar muss $ROOTDIR in $DIR umbenannt werden (oder umgekehrt ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alexf10 Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Das hat zwar mit dem Thema nichts zu tun aber stellt trotzdem interessante alternative dar. Mann kann die Logs auch in Datenbank abspeichern oder an Syslogserver schicken: http://modperl.com:9000/perl_conference/cool_tricks/mp_log2.html http://modperl.com:9000/perl_conference/cool_tricks/log12.html http://modperl.com:9000/perl_conference/cool_tricks/log11.html vorausgesetzt Perl und einige Modulesind installiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Original geschrieben von hWARS moin ! -Was passiert mit den Logs zwischen dem mv und dem Neustart --> ab ins Nirvana : nein, apache schreibt so lange in die logfiles, bis ein neustart erfolgt, und dann werden ja automatisch neue logfiles erstellt (habe das getestet). Hallo, in welche Logfiles soll den der Apache schreiben, wenn sie gemoved worden sind. Bsp (in etwas überzogenen Zeiten, aber zu Verdeutlichung ok): 01:00:00 - move der Dateien in nach XY 01:00:01 - User 1 kommt an (Wohin geht das log ? - XY kennt Apache nicht -> woher auch) 01:00:02 - User 2 kommt an (Wohin geht das log ? - XY kennt Apache nicht -> woher auch) 01:00:03 - Neustart Apache (Erstellung neuer Logfiles) 01:00:04 - User 3 kommt an (User 3 ist der erste Eintrag im Logfile) Habe es nicht getestet, aber kann man ja relativ leicht, indem man ein sleep einbaut zwischen dem moven der Logfiles und dem Neustart und ich bezweifle, dass der Apache die Logs in der derzeit cached und dannach erst die gecached Logs reinschreibt. Werde es aber beizeiten mal überprüfen, denn dsa würd mich auch interessieren. cya alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Original geschrieben von alligator 01:00:00 - move der Dateien in nach XY 01:00:01 - User 1 kommt an (Wohin geht das log ? - XY kennt Apache nicht -> woher auch) 01:00:02 - User 2 kommt an (Wohin geht das log ? - XY kennt Apache nicht -> woher auch) Frag mich nicht woher er das kennt, aber der Apache schreibt tatsächlich in die "gemovete" Datei weiter, bis zum Restart. Hatte mich auch gewundert, als mir das aufgefallen ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Hi, hmm also wenn ihr beide das sagt, wirds wohl stimmen, werde es dennoch mal testen, denn eigentlich ist das ja eine Sichheitslücke, denn wenn der Apache als "Nobody" läuft (was denke ich default ist) und ich diese log-Datei als root in /root schiebe, dann ist erstmal Sense für Apache-Prozesse irgendwas mit der Datei zu machen. Aber ihr macht mich jetzt richtig neugierig, da mal etwas mit rumzuspielen cya alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 28. Januar 2004 Teilen Geschrieben 28. Januar 2004 Original geschrieben von Wolle Frag mich nicht woher er das kennt, aber der Apache schreibt tatsächlich in die "gemovete" Datei weiter, bis zum Restart. Hatte mich auch gewundert, als mir das aufgefallen ist. Also das ist denke ich auch normal....da die Datei in die der Prozess schreibt noch im Speicher gehalten wird und zwar solange, bis der Prozess beendet ist. Probier doch einfach mal folgendes aus: Du erstellst eine Testdatei....sagen wir 'huhu' user@host~# vi huhu schreibst da drin will rum...Achtung nicht speichern....so jetzt wechselst du die Konsole bzw. machst ein neues Terminal auf.... und sagst: user@host~# rm huhu und was passiert??? Ist die Datei huhu auf der andren Konsole wech?? Nein! Du kannst nach herzenslust weiterschreiben....die Datei befindet sich nicht mehr im Dateisystem....jedoch im Speicher. Du könntest jetzt die Platte total vollschreiben mit irgend einem Prozess....und keiner würde bemerken dass es diese Datei gibt...abgesehen von der CPU-Zeit, Speicherplatz, etc... so nun beende den vi - endweder mit :q! oder wie auch immer...bloß nicht mit ZZ oder :qw! und du wirst sehen die Datei ist auch wirklich nimmer da...wenn du jetzt :wq! oder ZZ gemacht hättest dann würde er die Datei auch wieder auf Platte schreiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alligator Geschrieben 28. Januar 2004 Teilen Geschrieben 28. Januar 2004 Hallo Schlaubi, 1) dass ist doch was völlig anderes. 2) und ausserdem geht es nicht, da die Datei solange du sie nicht min. einmal gespeichert hast auch garnicht an der Stelle auf dem Dateisystem existiert. Situation mit deinem Beispiel dargestellt. /tmp # vi x 1 2 3 :w anderes Terminal $ mv /tmp/x /usr/y $ tail -f /usr/y # vi x // immernoch offen 1 2 3 4 // neu 5 // neu Und du wirst sehen, dass sich in /usr/y nichts mehr verändert, egal was du nun machst ... cya alligator Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skullbo Geschrieben 29. Januar 2004 Teilen Geschrieben 29. Januar 2004 Hallo obiges Skript ist schon brauchbar. Würde es aber noch derart abändern/erweitern, dass eine Nummerierung statt findet, sodass log.[1-7] pro Woche entstehen, datiert, gepackt und gesichert werden. Montag=> log Dienstag=> log von Montag wird log.1 Dienstag wird log Mittwoch=> log.1 wird log.2 log wird log.1 Donnerstag=> log.2 wird log.3 , log.1 wird log.2, log wird log.1 usw.... Am Montag sind dann sieben Logs voll. Anschließend werden diese in ein Verzeichnis verschoben, dieses mit aktuellem Datum versehen und gepackt. Wann sie nun gelöscht werden liegt im Emessen der Firma/Webserver Betreiber. Kenn mich mit den Aufbewahrungsfristen nicht aus ob muß oder nicht etc. Als tip fürs Skript => der Befehl test wird hilfreich sein. Ansonsten bisschen nachdenken, ganz ganz Easy und google & Co kann auch helfen. Viel Spaß Gruß Skullbo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.