Veel daemons die in CentOS Linux draaien, maken hun eigen logboekbestanden aan. Deze logbestanden bevatten nuttige berichten met betrekking tot de werking van die daemons. Bijvoorbeeld foutmeldingen die helpen bij het diagnosticeren van problemen met het systeem. Na verloop van tijd moeten deze logbestanden worden geroteerd, zodat ze gemakkelijker te beheren zijn. Logrotatie is het proces waarbij grote logbestanden worden opgesplitst en oude logbestanden worden gearchiveerd voor toekomstig gebruik. In CentOS is een programma genaamd logrotate verantwoordelijk voor het roteren van logbestanden. In deze post bekijk ik hoe je de werking van logrotate kunt aanpassen.
Running logrotate
logrotate wordt dagelijks uitgevoerd door cron via het bestand /etc/cron.daily/logrotate. In CentOS 5.x is cron verantwoordelijk voor het uitvoeren van systeem cron jobs zoals logrotate. Het kan worden geconfigureerd door /etc/crontab te bewerken.
In CentOS 6.x is anacron standaard geïnstalleerd en is verantwoordelijk voor het uitvoeren van systeem cron jobs.
logrotate.conf
logrotate.conf staat in /etc/ en bevat de standaard systeem brede configuratie voor logrotate. Standaard op CentOS zal logrotate wekelijks logs roteren en 4 weken backlogs bijhouden. U kunt logrotate.conf aanpassen, maar het is meestal beter om de individuele daemon’s log rotatie configuratie aan te passen in /etc/logrotate.d/
/etc/logrotate.d/
Deze directory bevat log rotatie bestanden voor verschillende services die op het systeem draaien.
Een typisch bestand in deze directory is deze voor Apache ( /etc/logrotate.d/httpd ):
/var/log/httpd/*log { missingok monthly notifempty sharedscripts postrotate /sbin/service httpd reload > /dev/null 2> /dev/null || true endscript}
De eerste regel is een reguliere expressie die overeenkomt met de logbestanden. In dit geval alle bestanden die eindigen op “log” en zich bevinden in de directory /var/log/httpd.
Daarna heb je binnen de openings- en sluitingsaccolades de opties voor logrotatie voor de bestanden van deze daemon. In het bovenstaande geval heb je maandelijkse rotatie geconfigureerd.
Opties voor logrotate
Enkele van de opties die je kunt opnemen in het logrotate.conf bestand of de individuele daemon’s logrotatie bestanden in /etc/logrotate.d/ zijn :
- rotate: Geef het aantal back logs op om te bewaren met de rotate optie. Bijvoorbeeld “rotate 5” zal 5 oude logbestanden bewaren.
- compress: Zal de oude logbestanden comprimeren om schijfruimte te besparen.
- dagelijks, wekelijks, maandelijks of jaarlijks: Roteer logs nadat de opgegeven periode is verstreken.
- grootte: Specificeer de grootte van het logbestand om rotatie te triggeren. Bijvoorbeeld “grootte 50M” zal het logbestand roteren als het 50MB of groter is. U kunt het voorvoegsel M gebruiken voor megabytes, k voor kilobytes en G voor gigabytes. Als er geen voorvoegsel wordt gebruikt, betekent dit bytes.
- minsize: Dit is als size behalve dat het ook rekening houdt met de periode ( maandelijks, wekelijks etc. ). Dus het zal alleen de logbestanden roteren als de periode is bereikt EN de logbestanden groter zijn dan de opgegeven minsize.
- prerotate en postrotate: Deze specificeren commando’s die je kunt uitvoeren voor en na de logrotatie. Bijvoorbeeld het herstarten van de daemon na logrotatie.
Voor de volledige lijst van beschikbare opties zie het logrotate.conf man bestand ( man logrotate.conf op CentOS ).