logrotate installeren en gebruiken om logbestanden te beheren in Ubuntu 18.04 LTS
Logbestanden zijn het belangrijkst voor de beveiliging van Linux systemen. Het logrotate gereedschap is speciaal ontworpen om het beheer van logbestanden op een Linux systeem te vereenvoudigen; het maakt automatische rotatie, compressie, verwijdering en verzending van logbestanden mogelijk. Je kunt logrotate eenvoudig instellen om een logbestand dagelijks, wekelijks, maandelijks te behandelen. Het logrotate programma roteert logbestanden door de oudste van je systeem te verwijderen en nieuwe logbestanden aan te maken.
In deze zelfstudie leg ik uit hoe je logrotate kunt gebruiken om logs te beheren op een Ubuntu 18.04 server.
Vereisten
- Een server met Ubuntu 18.04 server.
- Een niet-root gebruiker met sudo privileges.
Installeer logrotate
Standaard is logrotate beschikbaar in de Ubuntu 18.04 LTS server. Is dat niet het geval dan kun je het installeren door het volgende commando uit te voeren:
sudo apt-get install logrotate -y
Als logrotate geïnstalleerd is, kun je de versie van logrotate controleren met het volgende commando:
sudo logrotate
Uitvoer:
logrotate 3.11.0 - Copyright (C) 1995-2001 Red Hat, Inc. This may be freely redistributed under the terms of the GNU Public License Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [-l|--log=STRING] [--version] [-?|--help] [--usage] [OPTION...]
Logrotate configureren
Standaard staat logrotate’s hoofdconfiguratiebestand logrotate.conf in /etc/logrotate.conf. Andere configuratiebestanden staan in /etc/logrotate.d. Je kunt ze opnoemen met het volgende commando:
ls /etc/logrotate.d
Uitvoer:
alternatives apport dpkg mysql-server rsyslog unattended-upgrades apache2 apt lxd openproject ufw
De belangrijkste opties van logrotate staan hieronder opgesomd:
missingok: geeft geen foutmelding als het log ontbreekt
weekly: roteert de logbestanden eenmaal per week
create: Het oude bestand wordt onder een nieuwe naam bewaard en een nieuw bestand wordt aangemaakt
compress: logrotate comprimeert logbestanden met gzip om ruimte te besparen
rotate 4: logrotate roteert een gegeven log viermaal voor het gewist wordt, dus dit houdt vier weken logs online
notifyempty: Roteer het logbestand niet als het leeg is
Standaard draait logrotate dagelijks door het shell script /etc/cron.daily/logrotate uit te voeren. Laten we de apache logrotatie eens testen door het volgende commando uit te voeren:
sudo logrotate -d /etc/logrotate.d/apache2
Uitvoer:
reading config file /etc/logrotate.d/apache2 Reading state from file: /var/lib/logrotate/status Allocating hash table for state file, size 64 entries Handling 1 logs rotating pattern: /var/log/apache2/*.log after 1 days (14 rotations) empty log files are not rotated, old logs are removed considering log /var/log/apache2/access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/error.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/other_vhosts_access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) not running prerotate script, since no logs will be rotated not running postrotate script, since no logs were rotated
Standaard wordt logrotate als een dagelijkse cron job uitgevoerd. Je kunt /etc/cron.daily/logrotate raadplegen voor meer informatie over de cron job. Je kunt de cron job voor logrotate ook instellen om elk uur, wekelijks en jaarlijks te lopen.