Het bijhouden en opschonen van logs met logrotate

logrotate cron featured 2531325097b

Het beheren van logbestanden is een essentieel onderdeel van het onderhouden van scripts en automatiseringen. Zonder goed beheer kunnen logbestanden snel groot worden, de schijfruimte opslokken en het overzicht in de automatisering belemmeren. In deze blog bespreek ik hoe je de logs bijhoudt, test en automatisch opschoont met logrotate, inclusief praktische tips en handelingen.

1. Het belang van logbestanden

Logbestanden geven inzicht in wat de scripts uitvoeren. Ze zijn nuttig om:

  • Fouten op te sporen in scripts of automatiseringen
  • Prestaties van de scripts te monitoren
  • Historische gegevens bij te houden van uitgevoerde taken

Bijvoorbeeld, op mijn NAS houd ik logs bij van:

  • API-scripts (weerdata, DMARC-monitoring)
  • Video- en fotoprocessing scripts
  • Site-snelheidstests
  • Updates van de kaarttegels in de self-hosted versie van openstreetmap

Het is belangrijk dat deze logs gestructureerd worden opgeslagen en periodiek opgeschoond, zodat ze geen onnodige ruimte innemen.

2. Testen van logs

Voordat je automatische opschoning instelt, is het verstandig om de logs en de scripts te testen:

  1. Controleer of de logs correct worden geschreven:
    ls -lh /volume1/cron/logs/
    

    Hier zijn mijn logbestanden, in mijn geval, zoals log_thuisbatterij.log, log_maand_api.log, of sitespeed.log.

  2. Controleer de inhoud van een log:
    tail -n 20 /volume1/cron/logs/log_thuisbatterij.log
    

    Hiermee lees ik de meest recente logregels.

  3. Test een script handmatig en kijk of de logs correct worden bijgewerkt.

Door dit regelmatig te doen, weet ik zeker dat de logs betrouwbaar zijn voordat ik de automatische rotatie instelt.

3. Het gebruik van logrotate

Logrotate is een krachtig hulpmiddel om logbestanden automatisch op te schonen en te roteren. Belangrijk is dat ik  het correct configureer en begrijp hoe het werkt:

  • Configuratiebestanden staan in /etc/logrotate.d/
  • DSM leest standaard /etc/logrotate.conf, dat automatisch alle bestanden in /etc/logrotate.d/ verwerkt
  • Hierdoor hoef ik dus geen aparte taak in de DSM Taakplanner aan te maken

Mijn configuratiebestand voor scriptlogs ziet er bijvoorbeeld zo uit:

/volume1/cron/logs/*.log
/volume1/cron/logs/*.txt
{
    weekly
    rotate 12
    missingok
    notifempty
    compress
    delaycompress
    dateext
    dateformat -%Y%m%d
    copytruncate
}

Uitleg van de belangrijkste opties:

  • weekly: rotatie gebeurt wekelijks
  • rotate 12: maximaal 12 oude logs bewaren
  • compress en delaycompress: oude logs worden gecomprimeerd
  • dateext en dateformat: voegen de datum toe aan gearchiveerde logs
  • copytruncate: zorgt dat het actieve logbestand niet wordt gesloten, maar de inhoud wordt gekopieerd en daarna leeggemaakt
4. Status van de rotatie controleren

Logrotate houdt bij wanneer logs voor het laatst zijn geroteerd in het bestand:

/var/log/logrotate.status

Controleer bijvoorbeeld:

grep cron-logs /var/log/logrotate.status
  • Bij debug-tests (logrotate -d) wordt geen state geschreven
  • Bij een geforceerde run (logrotate -f) of de reguliere DSM-taak wordt de status (wel) bijgewerkt

Zo weet ik altijd wanneer logs voor het laatst zijn geroteerd en voorkom ik dubbele rotaties.

5. DSM Specifiek: Automatische rotatie zonder extra taak

Synology DSM voert logrotate standaard uit als root, waardoor:

  • de configuratie in /etc/logrotate.d/cron-logs automatisch wordt meegenomen
  • ik geen aparte taak hoeft aan te maken in de DSM Taakplanner
  • rotatie veilig en consistent gebeurt, met correcte permissies en statefile-beheer
6. Samengevat
  • Locatie logs: /volume1/cron/logs/
  • Configuratie logrotate: /etc/logrotate.d/cron-logs
  • Status van rotatie: /var/log/logrotate.status
  • Debug-test: logrotate -d /etc/logrotate.d/cron-logs (geen permanente wijziging)
  • Geforceerde rotatie: logrotate -f /etc/logrotate.conf
  • DSM taakplanner: geen extra taak nodig, DSM draait standaard logrotate
logbeheer en rotatie op dsm
logbeheer en rotatie op dsm
Conclusie

Door het correct bijhouden van logbestanden, het testen van scripts en het gebruik van logrotate kan ik:

  • Logs overzichtelijk en veilig beheren
  • Schijfruimte besparen door oude logs te comprimeren
  • Problemen sneller opsporen dankzij gestructureerde logregistratie

Door de configuratie in /etc/logrotate.d/ te plaatsen, integreer ik mijn automatisering netjes met die van DSM en hoef ik geen extra taken te beheren. Zo blijft mijn NAS schoon en overzichtelijk, en heb ik  altijd een betrouwbaar naslagwerk voor uw logbeheer.

 

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *