Come gestire i file LOG su un router


In questa pagina descriverò come gestire i file LOG su un router (Asus RT-AC56U) - useremo alcuni pacchetti di Entware, pertanto fate riferimento a questa pagina su come installare Entware su un router.
Su un router possiamo installare qualunque tipo di daemon, e la maggior parte dei daemon crea e gestisce un file LOG il quale può crescere a dismisura e occupare parecchio spazio sullo storage interno del router. La gestione dei file LOG è di primaria importanza soprattutto quando si ha a che fare con uno storage limitato, come quello di un router, pertanto gestire un file LOG diventa fondamentale per evitare di saturare lo spazio su un router. Per gestire i file LOG useremo un'applicazione Linux chiamata "LOGROTATE" la quale permette, se eseguita, di gestire adeguatamente i file LOG, seguendo le indicazioni di un file di configurazione opportunamente impostato.


Come installare l'applicazione LOGROTATE

Allo scopo di installare l'applicazione "LOGROTATE" con i pacchetti Entware, dobbiamo eseguire il seguente comando :
opkg install logrotate
Il suddetto pacchetto contiene il file eseguibile "/opt/sbin/logrotate" e il file di configurazione "/opt/etc/logrotate.conf". Creiamo una copia di riserva del file di configurazione "/opt/etc/logrotate.conf".
Ciò che segue è il contenuto di esempio del suddetto file di configurazione "/opt/etc/logrotate.conf" :

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /opt/etc/logrotate.d

# system-specific logs may be also be configured here.

Fare riferimento a questa pagina per ulteriori dettagli sul file di configurazione "logrotate.conf".
Nel suddetto esempio:

  • i file log verranno "ruotati" (ovvero archiviati) ogni settimana;
  • verranno "ruotati" su base 4 (ovvero la rotazione si basa su 4 file) prima di essere rimossi;
  • verrà creato un file LOG vuoto dopo la rotazione di quelli più vecchi;
  • useremo un prefisso nel nome del file, formato dalla data di creazione sui file log già archiviati;
  • includeremo i file contenuti nella cartella "/opt/etc/logrotate.d" per la rotazione dei file log.

Ovviamente nel suddetto file di esempio manca qualunque riferimento ad un file .LOG già esistente, che andremo ora ad includere.


Come impostare il file di configurazione di LOGROTATE

Come esempio prendiamo il file LOG del daemon Transmission (fare riferimento a questa pagina per ulteriori dettagli su come installare e configurare il suddetto daemon Transmission). Per sapere dove è collocato, usare il seguente comando "ps | grep transmission-daemon"; nella riga di output contenente il daemon Transmission, dopo il parametro "-e" è definito il percorso e il file LOG del suddetto daemon. Completiamo il file di configurazione "logrotate.conf" in modo tale da avere un riferimento al suddetto file LOG del daemon Transmission.

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# Some packages can drop log rotation information into this directory
include /opt/etc/logrotate.d

# system-specific logs may be also be configured here.

"/opt/var/log/transmission.log" {
    create 666 nobody nobody
    daily
    missingok
    nocompress
    nomail
    notifempty
    rotate 10
    size 100k
    su nobody nobody
}

Nel suddetto file di configurazione, abbiamo creato una sezione apposita per il file LOG del Transmission con il percorso "/opt/var/log/transmission.log" ovvero il percorso dove è collocato il file LOG del Transmission. All'interno di questa sezione includiamo i parametri e le opzioni di configurazione dedicati al suddetto file LOG, questi parametri hanno priorità su quelli impostati al di fuori della suddetta sezione. I parametri forniscono la seguente configurazione:

  • Dopo la rotazione, viene creato un nuovo file LOG vuoto, con i permessi di accesso al file impostati su "666" (stesso parametro usando dal comando "chmod"), e con i permessi proprietari del file impostati su "nobody nobody" (stesso parametro usato dal comando "chown");
  • I file LOG vengono ruotati ogni giorno;
  • Se il file LOG è mancante, non visualizzare nessun messaggio di errore;
  • Non usare la compressione del file LOG;
  • Non inviare email dei file LOG più vecchi;
  • Non ruotare il file LOG se è vuoto;
  • I file LOG verranno ruotati per 10 volte prima di essere rimossi;
  • I file LOG verranno ruotati solo se essi arrivano ad occupare più di 100 kilobyte in dimensione;
  • I file LOG ruotati avranno i permessi proprietari impostati su "nobody nobody" (stesso parametro usato dal comando "chown").

Come eseguire l'applicazione LOGROTATE

Nel suddetto file di configurazione abbiamo previsto la rotazione dei file LOG ogni giorno, pertanto ogni giorno andremo ad eseguire l'applicazione "LOGROTATE".
Creiamo un file script, ad esempio lo chiamiamo "daily.sh", con il seguente contenuto :

#!/bin/sh

chmod 644 /opt/etc/logrotate.conf
/opt/sbin/logrotate /opt/etc/logrotate.conf