Come configurare il client Rsyslog per inviare registri al server Rsyslog in CentOS 7
La gestione dei log è uno dei componenti più critici in un'infrastruttura di rete. I messaggi di log vengono costantemente generati da numerosi software di sistema, come utilità, applicazioni, demoni, servizi relativi alla rete, kernel, dispositivi fisici e così via.
I file di registro si rivelano utili in caso di risoluzione dei problemi del sistema Linux, monitoraggio del sistema ed esame della forza e dei problemi di sicurezza del sistema.
Rsyslog è un programma di registrazione Open Source, che è il meccanismo di registrazione più popolare in un gran numero di distribuzioni Linux. È anche il servizio di registrazione predefinito in CentOS 7 o RHEL 7.
Il demone Rsyslog in CentOS può essere configurato per essere eseguito come server per raccogliere messaggi di registro da più dispositivi di rete. Questi dispositivi fungono da client e sono configurati per trasmettere i propri registri a un server rsyslog.
Tuttavia il servizio Rsyslog può essere configurato e avviato anche in modalità client. Questa configurazione indica al demone rsyslog di inoltrare i messaggi di registro a un server Rsyslog remoto utilizzando i protocolli di trasporto TCP o UDP. Il servizio Rsyslog può anche essere configurato per essere eseguito come client e come server contemporaneamente.
In questo tutorial descriveremo come configurare un demone Rsyslog CentOS/RHEL 7 per inviare messaggi di registro a un server Rsyslog remoto. Questa configurazione garantisce che lo spazio su disco della macchina possa essere preservato per l'archiviazione di altri dati.
Il luogo in cui quasi tutti i file di registro vengono scritti per impostazione predefinita in CentOS è il percorso di sistema /var
. È inoltre consigliabile creare sempre una partizione separata per la directory /var
, che può essere ampliata dinamicamente, in modo da non esaurire la partizione /(root)
.
Un client Rsyslog invia sempre i messaggi di registro in testo semplice, se non specificato diversamente. Non dovresti configurare un client Rsyslog per trasmettere messaggi di registro su Internet o reti che non sono sotto il tuo completo controllo.
Requisiti
- Procedura di installazione di CentOS 7.3
- RHEL 7.3 Procedura di installazione
- Configurare un server Rsyslog in CentOS/RHEL 7
Passaggio 1: verificare l'installazione di Rsyslog
1. Per impostazione predefinita, il demone Rsyslog è già installato e in esecuzione in un sistema CentOS 7. Per verificare se il servizio rsyslog è presente nel sistema, emettere i seguenti comandi.
rpm -q | grep rsyslog
rsyslogd -v
2. Se il pacchetto Rsyslog non è installato in CentOS, esegui il comando seguente per installare il servizio.
yum install rsyslog
Passaggio 2: configurare il servizio Rsyslog come client
3. Per imporre al demone Rsyslog installato su un sistema CentOS 7 di agire come client di registro e instradare tutti i messaggi di registro generati localmente a un server Rsyslog remoto, modificare il file di configurazione rsyslog come segue:
Per prima cosa apri il file di configurazione principale per la modifica.
vi /etc/rsyslog.conf
Quindi, aggiungi la riga seguente alla fine del file, come illustrato nell'estratto seguente.
*. * @192.168.10.254:514
Nella riga precedente assicurati di sostituire di conseguenza l'indirizzo IP dell'FQDN del server rsyslog remoto. La riga precedente indica al demone Rsyslog di inviare tutti i messaggi di registro, indipendentemente dalla struttura o dalla gravità, all'host con l'IP 192.168.10.254 tramite la porta 514/UDP.
4. Se il server di registro remoto è configurato per ascoltare solo su connessioni TCP o desideri utilizzare un protocollo di rete di trasporto affidabile, come TCP, aggiungi un altro carattere @
davanti dell'host remoto come mostrato nell'esempio seguente:
*. * @@logs.domain.lan:514
Il rsyslog di Linux consente anche di avere alcuni caratteri speciali, come =
o !
, che possono essere preceduti dai livelli di priorità per indicare "solo questa priorità " per il segno di uguale e "non questa priorità o superiore a questa ".
Alcuni esempi di qualificatori del livello di priorità Rsyslog in CentOS 7:
- kern.info=log del kernel con priorità informazioni e superiore.
- kern.=info=solo messaggi del kernel con priorità info.
- kern.info;kern.!err=solo messaggi del kernel con priorità di informazioni, avvisi e avvisi.
- kern.debug;kern.!=warning=tutte le priorità del kernel tranne warning.
- kern.*=tutti i messaggi di priorità del kernel.
- kern.none=non registra alcun messaggio relativo alle funzionalità del kernel indipendentemente dalla priorità.
Ad esempio, supponendo che tu voglia inviare solo messaggi di una struttura specifica a un server di registro remoto, come tutti i messaggi di posta correlati indipendentemente dal livello di priorità, aggiungi la riga seguente al file di configurazione rsyslog:
mail.* @192.168.10.254:514
5. Infine, per applicare la nuova configurazione, il servizio Rsyslog deve essere riavviato affinché il demone possa rilevare le modifiche, eseguendo il comando seguente:
systemctl restart rsyslog.service
6. Se per qualche motivo il demone Rsyslog non è abilitato durante l'avvio, emettere il comando seguente per abilitare il servizio a livello di sistema:
systemctl enable rsyslog.service
Passaggio 3: invia i registri Apache e Nginx a un server di registro remoto
7. Il server HTTP Apache può essere configurato per inviare messaggi di log a un server syslog remoto aggiungendo la seguente riga al suo file di configurazione principale come illustrato nell'esempio seguente.
vi /etc/httpd/conf/httpd.conf
Nel file di configurazione principale di Apache aggiungi la riga seguente.
CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined
La linea imporrà al demone HTTP di scrivere i messaggi di registro internamente nel file di registro del filesystem, ma elaborerà anche ulteriormente i messaggi attraverso un'utilità pipe to logger, che li invierà a un server syslog distante, contrassegnandoli come provenienti dal local1 facilità.
8. Se desideri indirizzare anche i messaggi del registro degli errori Apache a un server syslog remoto, aggiungi una nuova regola come quella presentata nell'esempio precedente, ma assicurati di sostituire il nome del file di log httpd e il livello di gravità del file di log in modo che corrisponda alla priorità dell'errore, come mostrato nell'esempio seguente:
ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"
9. Dopo aver aggiunto le righe precedenti, è necessario riavviare il demone Apache per applicare le modifiche, emettendo il seguente comando:
systemctl restart httpd.service
10. A partire dalla versione 1.7.1, il server web Nginx ha funzionalità integrate per registrare direttamente i suoi messaggi su un server syslog remoto, aggiungendo le seguenti righe di codice in un file di configurazione nginx.
error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;
Per un server IPv6, utilizza il seguente formato di sintassi per racchiudere l'indirizzo IPv6.
access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;
11. Sul server Rsyslog remoto è necessario apportare la seguente modifica al file di configurazione rsyslog, per ricevere i log inviati dal server web Apache.
local1.* @Apache_IP_address:514
È tutto! Hai configurato con successo il demone Rsyslog per l'esecuzione in modalità client e, inoltre, hai indicato al server Apache HTTP o Nginx di inoltrare i suoi messaggi di registro a un server syslog remoto.
In caso di arresto anomalo del sistema, dovresti essere in grado di indagare sul problema controllando il contenuto dei file di registro archiviati sul server syslog remoto.