Il file syslog

Dopo aver visto nel nostro precedente articolo cosa sono i log di sistema, continuiamo oggi con un nuovo articolo riguardo syslog. Dato che stiamo prendendo in considerazione l’ultima versione di Ubuntu (Ubuntu Natty Narwhal 11.04), è bene ricordare anche in questo articolo che il demone di registrazione del sistema syslogd è stato aggiornato a rsyslog. In conseguenza di ciò, le informazioni del sistema non vengono più registrate in /var/log/messages, ma in /var/log/syslog.

Aprendo il terminale e spostandovi nella directory /var/log con il comando

cd /var/log

eseguendo il comando ls potrete vedere l’elenco dei file di log del vostro sistema. Qui sono conservate tutte le informazioni sul normale funzionamento della macchina e soprattutto errori di processi e crash di sistema.

Per esempio sul mio pc il comando “ls” restituisce questo:

Di seguito alcuni log di sistema con una breve spiegazione:

  • /var/log/syslog: registro di sistema generico
  • /var/log/auth.log: registro di autorizzazione del sistema
  • /var/log/kern.log: registro di attività del kernel
  • /var/log/mail.log: registro di posta del sistema

Nel precedente articolo abbiamo parlato di come monitorare sulla shell il file syslog con questo comando:

tail -f /var/log/syslog

vi segnalo che su Ubuntu c’è un’utility che visualizza i log di sistema. Per usarla dovete cliccare sul launcher (icona di Ubuntu in alto a sinistra)
e digitare “visualizzatore di file di registro” oppure, se non usate Unity, andare in Sistema -> Amministrazione.

syslog puo essere configurato attraverso il file /etc/syslog.conf. In seguito all’aggiornamento, su Ubuntu Natty Narwhal il file di configurazione è /etc/rsyslog.conf.
La struttura del file è composta da righe formate da coppie di campi selettore e azione, dove selettore definisce cosa loggare, e azione dove scrivere i log. I due campi sono separati da spazi o tabulazioni.
La coppia facility e priorità definisce ogni selettore:

  • facility stabilisce il genere di dati da considerare per i log (ad esempio le informazioni provenienti dal processo che si occupa di gestire le stampanti);
  • priorità pone un filtro alla gravità dei messaggi da loggare.

Le facility predefinite si possono trovare nei sorgenti delle libc, nel file syslog.h. Vediamole:

auth: messaggi relativi alle autorizzazioni del sistema
authpriv: come auth, ma i messaggi possono contenere dati sensibili
cron: temporizzazione degli eventi
kern: messaggi del kernel.
lpr: gestione delle stampanti.
mail: tutto ciò che ha a che fare con le email.
syslog: messaggi generati dallo stesso syslog.
user: messaggi generati da programmi in esecuzione nello spazio utente
uucp: gestione del trasferimento di file, email e netnews tra computer.
ftp: riservato ai server ftp.
da local0 a local7: riservati per utilizzi locali.

Insieme al tipo di dato da loggare, l’applicazione specifica anche la priorità del messaggio.

Di seguito i livelli di priorità dalla più bassa alla più alta:

debug: non mostrati normalmente ma solo quando si vuole ottenere informazioni dettagliate da un programma.
info: informazioni sul funzionamento del programma.
notice: segnala una situazione significativa, ma sempre all’interno del normale funzionamento di un programma.
warning: messaggio generato in seguito a problemi di funzionamento.
err: si è verificata un errore.
crit: indica una situazione critica, che compromette il funzionamento del sottosistema coinvolto.
alert: condizione che impone un immediato intervento da parte dell’operatore.
emerg: il sistema risulta inutilizzabile.

Vi lascio con un esempio:

*.info;mail.none;authpriv.none;cron.none        /var/log/messages

/var/log/messages definisce l’azione

*.info;mail.none;authpriv.none;cron.none è il selettore che contiene al suo interno la priorità info e le facility mail, authpriv e cron.

Cosa si ottiene con questa stringa?
Nel file /var/log/messages verranno loggati tutti i messaggi di livello informativo, tranne quelli relativi alla posta (mail), all’accesso al sistema (authpriv) e al cron.