Ogni distribuzione Linux ha una sorta di meccanismo di registrazione che registra tutte le attività del sistema. Tempo fa abbiamo fornito un elenco di 20 file di registro archiviati in /var/log che potrebbero essere utili durante la risoluzione dei problemi. Questi log sono molto critici per l'amministratore di sistema ai fini della risoluzione dei problemi.
Di seguito sono riportati i tre metodi comuni per registrare un messaggio:
- Accesso allo stesso server:i messaggi vengono scritti nel disco rigido locale/ nel database locale
- Accesso a un server remoto:molti sistemi inoltrano i propri registri sulla rete a un server di registro centrale. Sul server di registro centrale, i messaggi provenienti da vari sistemi vengono scritti sul disco rigido/database locale.
- Registrazione del relè:il ramo "A" e il ramo "B" registrano i messaggi su 2 server diversi. Questi server a loro volta registrano il messaggio nella "Sede centrale".
Rsyslog è il programma di registrazione predefinito su diverse distribuzioni Linux inclusi i sistemi basati su Debian e Red Hat. Oltre all'implementazione del protocollo syslog, rsyslog aggiunge funzionalità aggiuntive come il filtro basato sul contenuto. Questo utilizza anche TCP per il trasporto e fornisce molte opzioni di configurazione.
Questo articolo spiega come implementare il metodo 2 sopra menzionato. vale a dire Questo spiega come configurare un server di registrazione centrale e inviare i registri dai singoli server al server di registrazione centrale.
Questa configurazione ti aiuterà ad analizzare i file di registro di tutti i server nella tua infrastruttura da un server di registro centrale.
Installazione
Rsyslog viene fornito come programma di registrazione predefinito nei sistemi basati su Debian Distribution e Red Hat. Se il tuo sistema non ha rsyslog, installalo come mostrato di seguito a seconda della tua distribuzione.
apt-get install rsyslog rsyslog-doc (or) yum install rsyslog rsyslog-doc
Le configurazioni di Rsyslog sono memorizzate nel file /etc/ryslog.conf e i file nella directory /etc/rsyslog.d/.
Struttura di configurazione
Prima di capire come configurare il server di registrazione centrale, è bene comprendere la struttura di configurazione di rsyslog.
I file di configurazione di Rsyslog sono strutturati nel modo seguente
- Moduli
- Direttive di configurazione
- Linea di regole
Moduli
Rsyslog ha un'architettura modulare. Consente l'aggiunta dinamica di funzionalità tramite questi moduli. I moduli sono classificati come:
- Moduli di input:utilizzati per raccogliere messaggi da varie fonti
- Moduli di output – Usati per scrivere i messaggi in vari posti (file, socket ecc..)
- Moduli di analisi:utilizzati per analizzare il contenuto del messaggio
Si prega di notare che sono disponibili anche altre categorie di moduli. Questo per fornire una panoramica di ciò che i moduli possono fare.
Direttive di configurazione
Tutte le direttive di configurazione devono essere specificate una per riga e devono iniziare con il simbolo del dollaro ($). Influisce sulle regole.
Linea di regole
Ogni riga della regola è composta da due campi, un "campo di selezione" e un "campo di azione". Il campo di selezione è diviso in due, "strutture e priorità". Azione specifica quale azione deve essere eseguita per la regola di corrispondenza.
Una configurazione di esempio
###################### MODULES ###################### $ModLoad imuxsock $ModLoad imklog ###################### Directives ###################### # Set the default permissions for all log files. $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 ###################### RULES ###################### mail.info /var/log/mail.info mail.warn /var/log/mail.warn mail.err /var/log/mail.err daemon.* /var/log/daemon.log
Nota:10 esempi per la visualizzazione di file di registro di grandi dimensioni in Linux potrebbero essere utili durante la manipolazione dei file di registro.
Modelli
I modelli sono una funzionalità molto importante fornita da rsyslog. Consente all'utente di registrare i messaggi nel formato desiderato. Può anche essere utilizzato per creare nomi di file dinamici per registrare i messaggi. In caso di registrazione del database, i modelli vengono utilizzati per convertire il messaggio in una corretta istruzione SQL.
Un modello di esempio sarà simile a:
$template mytemplate “Text-Before %msg% Text-After\n”
Il modello sopra registrerà il messaggio "This is hello from rsyslog" come:
Text-Before This is hello from rsyslog Text-After
Vedremo come utilizzare il modello per generare i file di log in modo dinamico.
Server di registrazione centrale
Le sezioni precedenti avrebbero dovuto fornire una panoramica su rsyslog e su come configurarlo. Ora passeremo alla configurazione di un sistema di registrazione centrale.
Per la nostra discussione avremo l'IP del server come "192.168.1.1" per il server di registro centrale, dove dovrebbero essere inoltrati tutti i messaggi di registro dal client.
Aggiungi le seguenti righe a rsyslog.conf dei server del server di registro centrale (in questo esempio, la riga seguente è stata aggiunta al server di registro con l'indirizzo IP 192.168.1.1):
# provides support for local system logging $ModLoad imuxsock # provides kernel logging support (previously done by rklogd) $ModLoad imklog # provides UDP syslog reception. For TCP, load imtcp. $ModLoad imudp # For TCP, InputServerRun 514 $UDPServerRun 514 # This one is the template to generate the log filename dynamically, depending on the client's IP address. $template FILENAME,"/var/log/%fromhost-ip%/syslog.log" # Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), will be under a separate directory which is formed by the template FILENAME. *.* ?FILENAME
Dopo aver aggiunto le righe precedenti a rsyslog.conf, riavviare il processo rsyslog. Ora il server rsyslog sarà pronto per accettare i messaggi.
# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
Aggiungi le seguenti righe a rsyslog.conf sulle singole macchine client che dovrebbero inviare i propri messaggi di registro al server centrale.
$ModLoad imuxsock $ModLoad imklog # Provides UDP forwarding. The IP is the server's IP address *.* @192.168.1.1:514 # Provides TCP forwarding. But the current server runs on UDP # *.* @@192.168.1.1:514
Riavviare il processo rsyslog sui client. Ora il server centrale rsyslog (in questo esempio, 192.168.1.1) riceverà tutti i messaggi di registro dai client configurati e il registro di ciascun client verrà posizionato in una directory separata.