Zum Inhalt springen

Rotating Logs Apache


Daiana

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 !

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;) )

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

cya

alligator

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...