Quando ero bambino, il sabato era il giorno in cui mio padre lavorava alla macchina. Apriva il cofano e guardava dentro in modo significativo. Aveva già un’idea di ciò che doveva essere messo a punto o aggiustato perché scriveva i registri. Teneva un registro meticoloso del chilometraggio della benzina, dei cambi d’olio, delle sostituzioni di filtri e tubi, ecc. Conosceva l’età, la qualità e le aspettative di servizio delle parti della sua auto perché registrava tutte quelle informazioni.
Come faccio io con la mia lucida Linux box, mio padre teneva i registri delle prestazioni della sua auto. Ma mentre lui scriveva in un numero infinito di quaderni rilegati a spirale, il mio computer raccoglie automaticamente i miei dati di log. Per impostazione predefinita, Linux usa il demone syslog per registrare i log sul funzionamento del sistema, mettendoli in un repository centrale (/var/log) dove posso esaminarli.
Questo è tutto ciò che demoni come syslog, rsyslog e syslog-ng sono veramente: Servizi che registrano dati sul mio sistema, pubblicandoli in un posto dove posso aprire i log e dare un’occhiata.
Se sei nuovo nell’amministrare il tuo sistema, è bene conoscere questi diversi demoni. Potreste decidere che il syslog di default vi serve proprio bene, o forse rsyslog o syslog-ng con le loro funzionalità più avanzate sono scelte migliori.
Syslog è l’originale. Il suo solo nome può essere un ostacolo per il nuovo amministratore perché c’è syslog il demone, syslog il protocollo e syslog il messaggio. Il demone syslog ascolta i messaggi sul socket syslog e poi crea una voce nel file di log appropriato. Usa il formato syslog per i campi e i dati del messaggio. Ecco un esempio di messaggio syslog su un tentativo fallito di login:
<>1 2003-10-11T22:14:15.003Z server1.com sshd – – pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.2.2
Puoi saperne di più sui campi dei messaggi syslog in questo articolo: Linux Logging Basics.
Syslog crea file di log che sono tecnicamente leggibili. Dovete solo sapere cosa rappresentano tutti i campi e il significato dei loro valori. Francamente, a meno che non vogliate la credibilità di maneggiare gli strumenti dei nostri antenati sui vostri sistemi Linux, vi incoraggio a guardare invece rsyslog.
Rsyslog si basa su syslog, dandogli flessibilità. Si configura in un linguaggio chiamato RainerScript, e una delle prime cose che probabilmente vorrete fare è dire a rsyslog dove inviare i vostri dati di log. In questo esempio, stiamo inviando i nostri dati di log a un server chiamato BEBOP.
action(type=”omfwd” protocol=”tcp” target=”BEBOP” port=”514″)
Siccome il vostro sistema è probabilmente arrivato con rsyslog già caricato e configurato, indirizzare i dati di log a un particolare server potrebbe essere tutta la configurazione di cui avete bisogno. Questo è il motivo per cui potreste voler impostare un cron job per logrotate, che tronca i file di log che invecchiano e li archivia. Senza rotazione dei log, rsyslog continua a raccogliere dati di log, troncandoli, sovrascrivendo i dati più vecchi e, se tutto va male, anche mandando in crash il sistema quando il disco è pieno. Anarchia!
In alternativa, puoi configurare rsyslog per inviare tutti i tuoi dati di log a una soluzione di gestione dei log come Loggly, che archivia i tuoi dati e te li presenta in un modo che puoi facilmente cercare e analizzare. Non l’anarchia!
Tra syslog e rsyslog, è arrivato syslog-ng per aggiungere più funzionalità al demone syslog. Ha alcune grandi capacità di filtraggio. Può filtrare i messaggi di log in base al loro contenuto, non solo su campi come il timestamp. Quando sto guardando migliaia di messaggi di log, essere in grado di azzerare la mia ricerca su un contenuto specifico significa la differenza tra risolvere il mio problema e chiamare il mio sistema con nomi poco gentili.
Syslog-ng elabora automaticamente i messaggi di log in un repository centrale e applica loro filtri complessi. Syslog-ng può anche analizzare i vostri dati di log in messaggi JSON, che potete usare in uno strumento di gestione dei log come Loggly. Guarda com’è facile vedere a colpo d’occhio chi si è collegato al tuo sistema e quanto spesso! Che figata!
Tornando alla mia piccola macchina Linux, syslog-ng ha più di quanto io usi. Questo sistema è dove scrivo, memorizzando il mio lavoro nel cloud. Non sto gestendo centri dati e nemmeno utenti multipli. Solo il mio equivalente della macchina di papà, mettendola a punto di tanto in tanto, riparandola quando ha un po’ di problemi. Uso rsyslog perché è quello che c’è sul mio sistema. Non sono un hobbista né un sysadmin, quindi “perché è quello che c’è sul mio sistema” è una buona scelta per me. Le vostre esigenze sono probabilmente diverse.