Het opzetten van logrotate op Centos 7
Gisteren had ik een probleem met een /var/log/ partitie met te weinig capaciteit. Sommige logs waren te groot en logrotate is de perfecte tool om dit probleem op te lossen. Het is een software ontworpen voor het verminderen van de ruimte voor elk logbestand dat we hebben. En het kan op een aantal manieren worden gedaan.
Logrotate Beschrijving: logrotate is ontworpen om het beheer van systemen die grote aantallen logbestanden genereren te vergemakkelijken. Het maakt automatische rotatie, compressie, verwijdering en verzending van logbestanden mogelijk. Elk logbestand kan dagelijks, wekelijks, maandelijks, of wanneer het te groot wordt worden behandeld.
Normaal wordt logrotate uitgevoerd als een dagelijkse cron job. Het zal een log niet meerdere keren op een dag wijzigen. Dus in een paar woorden, logrotate vermindert het gebruik van ruimte op schijf door log bestanden.
Logrotate configuratie
De configuratie van logrotate wordt gemaakt in een hoofdbestand: /etc/logrotate.conf en andere service-specifieke configuratiebestanden die zijn opgeslagen in /etc/logrotate.d/
Dus de belangrijkste voorbeeldconfiguratie is:
# see "man logrotate" for details# rotate log files weekly specified in /etc/logrotate.d/weekly# keep 4 weeks of all log filesrotate 4# create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed by gzipcompress# RPM packages drop log rotation information into this directory#there are all other configurations of services and their logs to rotateinclude /etc/logrotate.d
Enkele voorbeelden en echte logbestandconfiguraties
Dus, we kunnen een nieuw logbestand toevoegen aan /var/log/ op deze manier:
echo "this is a sample log file" > /var/log/vasil.log#this create a log file vasil1.log of size 5MBdd if=/dev/zero of=/var/log/vasil1.log bs=1M count=5
Volgende, we maken een nieuwe configuratie bestanden die worden opgeslagen in bestemming hierboven uitgelegd:
vim /etc/logrotate.d/vasil###/var/log/vasil.log { missingok notifempty compress minsize 1M daily create 0600 root root}
vim /etc/logrotate.d/vasil1###/var/log/vasil1.log { missingok notifempty compress minsize 1M daily create 0600 root root}
En enige uitleg van variabelen:
- missingok – voer geen foutmelding uit als logbestand ontbreekt
- notifempty – draai logbestand niet als het leeg is
- compress – Oude versies van logbestanden worden standaard gecomprimeerd met gzip
- minsize – Log bestand wordt alleen geroteerd als het groter is dan 1M
- daily – zorgt voor dagelijkse rotatie
- create – creëert een nieuw logbestand met rechten 600 waarbij de eigenaar en groep de root gebruiker is
Als je meer opties en hun uitleg wilt, kijk dan in de handleiding:
man logrotare
Kijk naar de lijst van /var/log voor onze log bestanden. We kunnen zien, dat we een log hebben vasil.log met grootte 26b en vasil1.log met grootte 5MB.
ls -lah /var/log/va*-rw-r--r--. 1 root root 5.0M Mar 3 13:21 /var/log/vasil1.log-rw-r--r--. 1 root root 26 Mar 3 13:21 /var/log/vasil.log
Nu kunnen we onze configuratie debuggen via dit commando:
logrotate -d /etc/logrotate.d/vasil1orlogrotate -d /etc/logrotate.d/vasil
Dus, als we logrotate handmatig willen draaien en zien, wat er gebeurt, voer dan het volgende commando uit. Maar let op, het roteert al je logs, gedefinieerd in /etc/logrotate.d/
logrotate -f /etc/logrotate.conf
En we kunnen zien dat beide log bestanden gecomprimeerd zijn en dat er twee nieuwe lege log bestanden zijn aangemaakt:
ls -lah /var/log/va*-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil1.log-rw-r--r--. 1 root root 5.0K Mar 3 13:21 /var/log/vasil1.log-20170303.gz-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil.log-rw-r--r--. 1 root root 44 Mar 3 13:21 /var/log/vasil.log-20170303.gz
We kunnen ons gecomprimeerde logbestand bekijken met dit commando:
zcat /var/log/vasil.log-20170303.gzthis is a sample log file
Of we kunnen gunzip gebruiken om ze uit te pakken met het commando gzip.
Wanneer we logrotate gebruiken, moeten we soms een applicatie of service herstarten. Logrotate kan dat doen met een script genaamd “postrotate”. Dit script kan worden gebruikt in een configuratiebestand zoals httpd. Wanneer log worden geroteerd, script herladen service om nieuwe lege log file.
cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}
Dus ik hoop, dat deze how to helpt iemand 🙂 Veel plezier.