Apache2 oraz logrotate, czyli co zrobić gdy logi serwera pożerają cały dysk :)

Z Podręcznik Administratora by OPZ SGU
Przejdź do nawigacji Przejdź do wyszukiwania
Wersja do druku nie jest już wspierana i może powodować błędy w wyświetlaniu. Zaktualizuj swoje zakładki i zamiast funkcji strony do druku użyj domyślnej funkcji drukowania w swojej przeglądarce.

Serwer na którym pracuje opz, miał pewien problem... mianowicie w ciągu miesiąca od postawienia pojawiło się 30 GB logów typu access. Z związku z powyższym konieczne było zainstalowanie systemu rotacji logów, wraz z kompresją.


Krokiem pierwszym jest upewnienie się że winowajcą są zbyt duże logi.

cd /var/log/apache2

A teraz właściwa zabawa

/var/log/apache2# du -ah
4.0K	./other_vhosts_access.log
695M	./access.log
27G	./error.log
27G	.


Ulala, 30 Gb logów... faktycznie... źle to wygląda... ale mamy logrotate, więc nosek do góry.

nano /etc/logrotate.conf  

a teraz na końcu dopisujemy


/var/log/apache2/access.log  {
daily
rotate 365
copytruncate
compress
notifempty
missingok
}
/var/log/apache2/error.log {
daily
rotate 365
copytruncate
compress
notifempty
missingok
}


Dla testu walimy

/etc/cron.daily/logrotate 

Jeżeli wyskoczy coś takiego:

duplicate log entry for /var/log/apache2/access.log

To albo wchodzimy w

nano /etc/logrotate.d/apache2

i usuwamy zawartość, albo usuwamy zawartość i przenosimy tam kod który dopisaliśmy powyżej... zależy kto jak woli sobie porządkować... Profit ? :>


Wpis do crontab

logrotate -vf /etc/logrotate.conf