Logfiles Apache archivieren

iceview

Lieutenant
Registriert
Jan. 2008
Beiträge
714
Hallo,

ich würde gerne die Logfiles des Apache archivieren. Bei mir werden in die Standardlogs der Ubuntu Installation erzeugt.

Wenn ich es richtig sehe, dann wird immer 1 Woche geschrieben, dann archiviert. Es gibt dann 3 Archive plus das 1 Log der laufenden Woche.

Ich würde gerne pro Woche ein Logfile generieren, am liebsten mit einem Datumsstring im Dateinamen. Aufbewahrungszeit 6 Monate.

Ich habe schon mit Rotatelogs oder Logrotate was versucht, bin aber irgendwie gescheitert.
Das was in der logrotate.conf steht verstehe ich nicht.

Code:
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

Woher weiss ich denn welche logs davon betroffen sind und wie kann ich welche ausnehmen bzw. für diese dann eine eigene Regel definieren?

Danke
 
das schlagwort ist "dateext", einfach eintragen

und Hilfe findet man auch in "man logrotate"
 
das einfachste wäre wohl die logrotate.conf zu editieren:

/var/log/apache2 {
missingok
dateext
weekly
rotate 24
}

schön ist das aber nicht.
du solltest in die conf eintragen:

include /etc/logrotate.d

und dann in /etc/logrotate.d/ eine datei namens apache2 erstellen.
dort kannst du dann eintragen:

/var/log/apache2/access_log {
compress
dateext
weekly
rotate 24
missingok
create 644 root root
notifempty
postrotate
/etc/init.d/apache2 reload
endscript
}

den ganzen spaß dann noch für dein error_log , ssl_request_log und was du sonst noch alles hast.
das kannst du einfach mit in /etc/logrotate.d/apache2 reinschreiben
 
Wenn ich aber in die logrotate.conf ein include setze wird es sicherlich berücksichtigt, aber werden dann nicht die jetzigen Befehle zum Archivieren dennoch ausgeführt?

Hätte ich dann nicht zwei Scripts die über das /var/log/apache2 laufen?
 
Ich muss hier nochmal nachfragen.

Anscheinend habe ich den include in der conf völlig übersehen. In der /etc/logrotate.conf ist /etc/logrotate.d included. Dort ist auch ein config File Apache 2:

Code:
/var/log/apache2/*.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		/etc/init.d/apache2 reload > /dev/null
	endscript
	prerotate
		if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
			run-parts /etc/logrotate.d/httpd-prerotate; \
		fi; \
	endscript
}

Sehe ich das Richtig, dass dort die Logs jede Woche rotieren und insgesamt 52 vorgehalten werden?

Dann kann ich doch auch hergehen und die Logfiles einfach jede Woche per rsync auf eine NAS schieben. Geht das in der Config Datei oder muss / sollte ich ein extra Skript schreiben?

Wann ist denn für den Cron weekly? Sonntag um 00:00 Uhr?

Danke
 
Das kannst du einfach als commando in zwischen "postrotate" und dem ersten "endscript" machen.

Wann Weekly ist, weiß ich gar nicht genau. Schau mal was es alles an /etc/cron* gibt. Da sollte sich finden lassen, wann die Jobs im cron.d laufen. Wo das genau steht weiß ich gerade nicht und ist von distri zu distri verschieden. Ansonsten einfach mal schaun wann das rotierte Logfile zuletzt geschrieben wurde ;)
 
Zurück
Oben