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.