logrotate configureren en beheren op Linux
Dit artikel legt uit hoe logrotate werkt, welke versies de belangrijkste distributies gebruiken en hoe je rotatie handmatig activeert. Gericht op systeembeheerders die logbestanden onder controle willen houden.
VEREISTEN
- Een Linux-distributie met logrotate geïnstalleerd. Check met: `logrotate --version` - Root-toegang of sudo-rechten voor het bewerken van configuratiebestanden in `/etc/logrotate.d/` - Basiskennis van de commandoregel
STAPPEN
1. Controleer de geïnstalleerde versie
Logrotate is standaard aanwezig op de meeste distributies. De versie verschilt per systeem.
logrotate --version
Debian 13 (Trixie) en Arch Linux gebruiken versie 3.22.0-1. Ubuntu 24.04 gebruikt 3.19.0-1ubuntu1.1. NetBSD via pkgsrc heeft 3.21.0 voor `sysutils/logrotate`.
2. Begrijp het configuratiemodel
Logrotate leest configuratie uit `/etc/logrotate.conf` en `/etc/logrotate.d/`. Het hoofdconfiguratiebestand bevat globale instellingen. De map bevat per-service configuraties. Elk bestand definieert rotatie voor specifieke logbestanden.
3. Bekijk een bestaande configuratie
Bekijk hoe een standaardconfiguratie eruitziet:
cat /etc/logrotate.d/rsyslog
Deze toont rotatieregels voor systeemlogs. Je ziet frequentie (dagelijks, wekelijks), rotatiecount (aantal bewaarde versies) en compressie-instellingen.
4. Maak een eigen configuratie
Maak een configuratie voor een applicatie. Dit voorbeeld roteert `/var/log/mijnapp.log` wekelijks en bewaart 4 versies:
sudo nano /etc/logrotate.d/mijnapp
/var/log/mijnapp.log {
weekly
rotate 4
compress
missingok
notifempty
create 0640 www-data adm
}Uitleg: `weekly` roteert elke week, `rotate 4` houdt 4 oude versies, `compress` pakt ze in met gzip, `missingok` slaat ontbrekende bestanden over, `notifempty` roteert niet bij lege logs, `create` maakt een nieuw logbestand met de opgegeven rechten.
5. Test de configuratie zonder daadwerkelijk te roteren
Gebruik de dry-run-modus om fouten te vinden voordat je echt roteert:
sudo logrotate -d /etc/logrotate.conf
Dit toont wat logrotate zou doen zonder bestanden te wijzigen. Controleer de uitvoer op foutmeldingen.
6. Forceer een rotatie handmatig
Activeer rotatie direct, ongeacht het schema:
sudo logrotate --force /etc/logrotate.conf
Met `--force` roteer je alle logs volgens de configuratie, ook als de frequentie nog niet bereikt is. Gebruik dit na het aanpassen van configuraties om direct effect te zien.
7. Voorkom concurrentieproblemen bij parallelle runs
Als je logrotate handmatig draait terwijl cron het ook uitvoert, gebruik dan de state lock optie:
sudo logrotate --skip-state-lock /etc/logrotate.conf
Dit voorkomt dat twee processen tegelijk dezelfde logs roteren. Standaard vergrendelt logrotate zijn state file om dit te voorkomen.
8. Stuur logs per e-mail
Configureer e-mailnotificatie voor geroteerde logs:
sudo logrotate --mail "beheer@voorbeeld.nl" /etc/logrotate.conf
Dit stuurt de inhoud van geroteerde logs naar het opgegeven adres. Het `--mail`-commando overschrijft het standaard `mail`-commando. Let op: dit vereist een werkende mailserver op het systeem.
VERIFICATIE
Controleer of rotatie correct werkt:
sudo logrotate -v /etc/logrotate.conf
De `-v`-vlag toont gedetailleerde uitvoer van elke actie. Je ziet per logbestand of rotatie plaatsvond, of compressie is uitgevoerd en welke bestanden zijn aangemaakt.
Controleer ook de state file:
cat /var/lib/logrotate/status
Dit toont de laatste rotatiedatum per logbestand.
VEELGESTELDE PROBLEMEN
1. Logs worden niet geroteerd
Controleer of de configuratie in `/etc/logrotate.d/` correct is. Draai een dry-run: `sudo logrotate -d /etc/logrotate.conf`. Kijk of de state file de rotatie al als uitgevoerd markeert. Verwijder de specifieke entry uit `/var/lib/logrotate/status` en draai opnieuw.
2. Logrotate draait niet via cron
Check of de cron-job bestaat:
cat /etc/cron.daily/logrotate
Als deze ontbreekt, installeer logrotate opnieuw of maak handmatig een cron-job aan die dagelijks draait.
3. Permissiefouten bij rotatie
Als je `create` gebruikt, moet de opgegeven gebruiker bestaansrecht hebben op de directory. Controleer met:
ls -la /var/log/mijnapp.log
Pas de `create`-regel aan naar een gebruiker die schrijfrechten heeft op de logdirectory.
De ontwikkeling van logrotate blijft actief: de GitHub-repository `logrotate/logrotate` toont een regelmatig releasepatroon, met 3.22.0 als nieuwste versie van 1 juni 2024. De overgang van oudere versiebeheersystemen naar Git, zichtbaar in de NetBSD-pakketgeschiedenis, weerspiegelt hoe het project zich aanpast aan moderne workflows. De vraag is niet of je logrotate nodig hebt, maar wanneer je het gaat configureren.