Chi scrive software, di solito, usa tracciare i messaggi accessori generati dal software in varie situazioni (in fase di debug, in caso di errore, o di avvertimento o di semplice informazione) su uno o più file di log che generalmente risiedono nella macchina stessa su cui gira il software.
Ad esempio, con PHP è possibile scrivere una riga di log nei log di sistema con il codice:
<?php openlog("MioScritpDiLog", LOG_PID | LOG_PERROR, LOG_LOCAL0); $access = date("Y/m/d H:i:s"); syslog(LOG_WARNING, "$access - messaggio personalizzato"); closelog(); ?>
Quando viene eseguito questo frammento di codice, viene scritta una riga nel file
/var/log/messages
Questo avviene poiché si è utilizzata una chiamata di sistema alla funzione syslog; a seconda del valore del parametro int facility
andremo a scrivere in un file diverso all’interno di /var/log/
nella stessa macchina in cui risiede la facility (applicazione) che può essere un’applicazione di sistema (ad esempio mail) oppure personalizzata.
È possibile indirizzare la chiamata ad un server che si occupa esclusivamente di logging; tale server poi può essere equipaggiato in modo tale da accedere ai contenuti dei log ad esempio attraverso un browser.
rsyslogd
è un demone che permette la scrittura di log remoti. Questa che segue è un frammento tratto da http://wiki.rsyslog.com
FailoverSyslogServer
Si presentano spesso situazioni in cui i dati di log devono essere spediti da un sistema locale verso un demone syslogd centrale (per consolidamento del dato, archiviazione o per altre ragioni). Un problema comune è che i messaggi vengono persi quando il syslogd centrale va fuori servizio.
Rsyslog ha la capacità di lavorare con server fuori servizio per prevenire la perdita di messaggi. Un prerequisito è che l’inoltro di messaggi di log verso server centrale sia basato su TCP. La ragione di ciò è che con UDP (che è un protocollo senza connessione) non c’è possibilità di sapere se il sistema remoto è andato giù.
Supponiamo di avere un server primario centrale e due secondari. In questo caso potete usare il seguente estratto di file di configurazione per mandare loro i dati:
rsyslog.conf:
*.* @@primary-syslog.example.com $ActionExecOnlyWhenPreviousIsSuspended on & @@secondary-1-syslog.example.com & @@secondary-2-syslog.example.com & /var/log/localbuffer $ActionExecOnlyWhenPreviousIsSuspended off
Questo selettore processa tutti i messaggi che riceve (*.*)
. Poi tenta di inoltrare ogni messaggio al server primary-syslog.example.com
(via tcp). Se questo non è raggiungibile, prova con secondary-1-syslog.example.com
, se anche questo fallisce tenta con secondary-2-syslog.example.com
. Se nessuno di questi server è raggiungibile, i dati sono salvati localmente in /var/log/localbuffer
.
Notate che i secondari ed il log locale vengono usati se quello prima di loro non funziona. Così, idealmente, /var/log/localbuffer
non riceverà mai un messaggio. Se il serve che è andato in failover torna su, prenderà il sopravvento sugli altri sistemi sotto di lui.
(Fonte: http://wiki.rsyslog.com)
Un altro sito in cui si trovano notizie precise anche per i cosiddetti newbies è questo.
Commenti recenti