apache's log rotieren lassen (syslog)

SpecialAgent

BSD Trainee
Hey Leute,

ich wollte mal eine Diskussion über ein sogenanntes logrotate verfahren für apache's logfiles eröffnen. Also, wenn jemand einen DOS Angriff macht, dann klar, wird /var/www/logs sehr schnell sehr voll... ok, hat auch schon ne eigene Partition... 4 GB.

Jetzt hab ich mir mal versucht ein logrotate skript zu schreiben, und dann cron alle 30 min dieses ausführen... ok, klappt nicht ganz... egal...

der System logger (syslog) sollte so etwas ja auch können, hab ich gehört.... allerdings finde ich nix wildes im Internet.... hat jemand Erfahrung mit dem rotieren von log files? Wenn ja, wo gibt es ein brauchbares Skript oder wie konfiguriere ich einen Systemlogger?

Gruss SA
 
/usr/ports/sysutils/logrotate/pkg-descr

Code:
Daemon to rotate, compress, remove and mail system log files.

I try to make it work just like /usr/sbin/newsyslog.
With logrotate, you can mail syslog and execute command
before or after logrotate.

mfg, Flas!!
 
Ja cool, schonmal danke...
aber leider gibt es das weder unter den ports noch unter den packages, zumindest nicht mit dem namen logrotate!
Evtl. verschrieben? Oder in 3.6 rausgenommen?

Gruss SA
 
arg, man ich bin dumm, ich hab unter freebsd in'n ports geguckt, naja es sollte aber imho nicht schwer zu portieren sein, sry!

gruss Flas!!
 
Hey,

ja habe mich jetzt in newsyslog reingedacht, nette Idee (wenn Sie funktioneren würde!) ;-)

also hier meine /etc/newsyslog.conf
Code:
#	$OpenBSD: newsyslog.conf,v 1.24 2003/11/11 17:00:50 jmc Exp $
#
# configuration file for newsyslog
#
# logfile_name          owner:group     mode count size when  flags
/var/cron/log		root:wheel	600  3     10   *     Z
/var/log/aculog		uucp:dialer	660  7     *    24    Z
/var/log/authlog	root:wheel	640  7     *    168   Z
/var/log/daemon				640  5     30   *     Z
/var/log/lpd-errs			640  7     10   *     Z
/var/log/maillog			600  7     *    24    Z
/var/log/messages			644  5     30   *     Z
/var/log/secure				600  7     *    168   Z
/var/log/wtmp				644  7     *    168   ZB
/var/log/xferlog			640  7     250  *     Z
/var/log/ppp.log			640  7     250  *     Z
/var/log/pflog				600  3     250  *     ZB /var/run/pflogd.pid

#Own Settings
/var/www/logs/access_log     root:daemon 644 2     20  * B /var/www/logs/httpd.pid SIGUSR1
/var/www/logs/error_log      root:daemon 644 2     250  *     B /var/www/logs/httpd.pid SIGUSR1
/var/www/logs/ssl_engine_log root:daemon 644 2     250  *     B /var/www/logs/httpd.pid SIGUSR1

das Problem, das ich habe, das wenn mir newsyslog die logs rotieren hat lassen, dann schreibt httpd (1.3.3) nicht mehr in die log file....
habe mir das auch alles durchgelesen und die Lösung ist ein apachectl graceful, das man mit dem SIGUSR1 signal auslösen könnte! Ok, klappt aber nich....

Frage:
SIGUSR1: ist in der Doku als ein benutzerspezifschen Signal genannt.
das Skript apachectl benutzt für apachectl graceful aber kill -USR1 httpd.pid, in den Foren und ähnlichen Lösungen machen die das aber alle mit
SIGUSR1... newsyslog beschwert sich übrigens bei USR1 und SIGUSR1 nimmt es an....
Wenn es jetzt ein benutzerspezifschen Signal ist, woher weiss dan Apache das das ein gracefull sein soll?

Bei FreeBSD benutzen die alle statt SIGUSR1 in der newsyslog.conf die Zahl 30,
bei mir beschwert sich aber newsyslog?!

Bitte um Hilfe! ;-)

Gruss SA
 
Hallo,

kannst Du das rotieren nicht mit rotatelogs(8) bewerkstelligen und dann einfach nur noch ein kurzes Script per Cron aufrufen, das bei uebervollem log-Verzeichnis regiert?

Vielleicht habe ich Dein Problem auch nicht richtig verstanden, aber bei mir ist das ganze so geloest:
Errorlog "| /usr/sbin/rotatelogs /var/log/httpd/error_log.%Y%m%d 86400"
das strftime(3)-format finde ich ganz hilfreich, aber das musst nicht genutzt werden.
Ich finde es auch vorteilhaft, dass so meine log-Files nicht in der chroot-Umgebung auftauchen. Da das ganze ueber eine pipe geht, muss Apache auch nicht neu gestartet werden.

Andere Sache, wenn das so nicht gehen sollte, probier mal "apachectl graceful" einfach so auszuführen, ab es klappt (newsyslog sendet das Signal USR1 an den Prozess, wenn es SIGUSR1 im configfile findet). Wenn nicht, könnte es evt. daran liegen das Deine httpd.conf nicht in der chroot-Umgebung ist, oder irgendwas in dieser Datei nicht mehr funktioniert, wenn sie innerhalb der chroot-umgebung gelesen wird, dann also man die httpd.conf durchsuchen.

Hoffe, war was hilfreiches bei
PhysChemist
 
FreeBSD
Code:
/var/log/httpd-access.log       root:www        640  12    *    $M1D0 JB /var/run/httpd.pid 30
/var/log/httpd-error.log        root:www        640  12    *    $M1D0 JB /var/run/httpd.pid 30
Hebt.
 
Zurück
Oben