Rsyslog e LogAnalyzer sono tool che aiutano gli amministratori a raccogliere i log di sistema in un modo centralizzato facilitando l'analisi dei dati raccolti.
In reti particolarmente elaborate il numero dei device installati producono tantissimi log che rende impossibile l'avere una chiara visione dello stato globale della rete senza avere un sistema di centralizzazione dei log prodotti.
Prerequisiti
- Centos 6.x minimal
- Un ambiente operativo LAMP
- Package Rsyslog e LogAnalyzer
Installazione di Rsyslog
Inanzitutto installare l'ambiente LAMP e il package Rsyslog utilizzando il comando yum.
# yum install httpd php mysql php-mysql mysql-server rsyslog rsyslog-mysql wget
E' possibile customizzare il nome del database (Syslog come default) prima di importare lo schema del db in MySQL editando il file createDB.sql.
# vi /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
Terminata la modifica, importare lo schema del db in MySQL. Nell'esempio la procedura crea un nuovo database chiamato rsyslogdb.
# mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
Assegnare i privilegi all'account rsyslog.
# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON rsyslogdb.* TO rsyslog@localhost IDENTIFIED BY 'passwd00'; mysql> flush privileges; mysql> exit
Editare il file di configurazione /etc/rsyslog.conf ed abilitare i parametri seguenti:
$ModLoad imuxsock $ModLoad imklog #$ModLoad immark $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 $ModLoad ommysql
# vi /etc/rsyslog.conf
Aggiungere inoltre le seguenti righe:
$AllowedSender UDP, 127.0.0.1, 192.168.10.0/24 $AllowedSender TCP, 127.0.0.1, 192.168.10.0/24 *.* : ommysql:127.0.0.1,rsyslogdb,rsyslog,passwd00
Abilitare il servizio per essere avviato al boot del sistema ed avviare il servizio.
# chkconfig rsyslog on
# service rsyslog restart
Se è presente un firewall, è necessario aprire le porte TCP 514 e UDP 514 perchè Rsyslog funzioni correttamente.
Testare Rsyslog
Per testare se tutto funziona correttamente, verificare se i messaggi arrivano al server Rsyslog.
# tail -f /var/log/messages
E' possibile inoltre verificare se i messaggi sono salvati nel database MySQL.
# mysql -u root -p
mysql> use rsyslogdb; mysql> select * from SystemEvents;
Se è presente un set vuoto significa che il tutto funziona.
Installazione di LogAnalyzer
Tramite il comando wget effettuare il download del package LogAnalyzer.
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz
Scompattare il file scaricato ed effettuare un move del contenuto nella directory root di Apache.
# tar -vxzf loganalyzer-3.6.3.tar.gz
# mv loganalyzer-3.6.3/src/ /var/www/html/loganalyzer
# mv loganalyzer-3.6.3/contrib/* /var/www/html/loganalyzer
Accedere alla directory creata ed assegnare i permessi corretti per eseguire gli scripts.
# cd /var/www/html/loganalyzer/
# chmod 744 configure.sh secure.sh
# ./configure.sh
Configurare LogAnalyzer
Accedere all'interfaccia web digitando dal browser il seguente indirizzo:
http://IP_address/loganalyzer
Al primo accesso viene visualizzato un messaggio di errore perchè l'applicazione non è ancora stata configurata. Cliccare sulla voce here e procedere con la configurazione.
Click su Next per avviare l'installazione.
Click su Next per continuare.
Abilitare l'opzione Enable User Database ed inserire i parametri impostati durante la creazione del database.
Cliccare su Next.
Se non vengono mostrati errori, click su Next per continuare.
Creare l'utente Admin digitando lo username e la password poi then click Next.
Selezionare come Source Type il valore MYSQL Native ed inserire i parametri del database precedentemente creato. Click su Next. Prestare attenzione al campo Database Tablename dove il valore deve essere corretto in:
SystemEvents
Cliccare su Finish per completare l'installazione.
Inserire le credenziali per effettuare il login a LogAnalyzer e cliccare sul bottone Login.
Il server Rsyslog visualizza i dati fino ad ora raccolti. Per raccogliere ulteriori log è necessario configurare i dispositivi di rete per inviare i messaggi syslog al server Rsyslog appena configurato.
Troubleshooting
Dopo aver effettuato il login può capitare che venga visualizzato il messaggio di errore:
Could not find the configured table, maybe misspelled or the table names are case sensitive
Questo errore è spesso dovuto ad una sintassi errata nel nome del campo DBTableName. Per risolvere il problema è talvolta sufficiente editare il file /var/www/html/loganalyzer/config.php e verificare che il valore inserito in DBTableName sia scritto con i corretti caratteri maiuscoli:
SystemEvents
# vi /var/www/html/loganalyzer/config.php
Corretto il valore del campo DBTableName, il sistema dovrebbe funzionare correttamente.
Ciao Paolo, seguendo la tua guida passo a passo, purtroppo loganalyzer mi sputa fuori che non riesce a trovare lob all'interno della tabella in oggetto. Ho ricontrollato tutti i file di configurazione ma non trovo discrepanze...la versione di centos usata è la minimal 6.4...
Some ideas?
ciao!
Volevo aggiungere: gli eventi ci sono nei log, pare un problema di scrittura su database...perchè loganalyzer mi fa correttamente tutte le connessioni, ma la tabella SystemEvents rimane inesorabilmente vuota....
Hai verificato i permessi dell'utente rsyslog assegnati per il database rsyslogdb?
I messaggi vengono salvati nel database?
# mysql -u root -p
mysql> use rsyslogdb;
mysql> select * from SystemEvents;
Hai verificato che la il nome della tabella SystemEvents sia stata inserita come in figura 20?
Il valore del campo DBTableName è corretto (maiuscole e minuscole)?
# vi /var/www/html/loganalyzer/config.php
Ti confermo tutto, la tabella è scritta corretta cosi come i permessi sono corretti. Per scrupolo li ho riassegnati ma nulla da fare.
La tabella risulta vuota, il sistema non logga nulla. Attivando di debug di loganalyzer vedo la query che fa ma non ho nessun tipo di alert o errore.
Ma i messaggi arrivano al syslog server?
# tail -f /var/log/messages
Ciao Paolo, si i messaggi arrivavano.
Ho risolto reinstallando rsyslog dopo la rimozione, non riesco a capire cosa ho sbagliato la prima volta visto che avevo rifatto la vm una seconda volta.
Resta ora il fatto di abilitare il logging da remoto, non vedo i log dei vari fw e server, ma quello è un altro discorso.
Grazie per il tuo supporto!
Fantastico post come sempre!
Non ero a conoscenza dell'esistenza di questo Loganalyzer, fin'ora mi sono sempre limitato al sempreverde logwatch, il problema è che quando le macchine crescono spulciare mail per mail diventa ingestibile, così problemi e allarmi sfuggono finchè diventano bloccanti :\
Poter tenere sott'occhio tutto con una console centralizzata è utilissimo!
Devo schedulare un test ASAP! Grazie!
Ciao Paolo,
ho un problema, la tabella del DB cresce in maniera spropositata. in 2 mesi scarsi è arrivata a 26 Gb, con il risultato che ogni volta che cerco di aprire l'applicativo via web impiega secoli sempre che non vada in timeout.
puoi darmi qualche soluzione?
ti ringrazio in anticipo
Se cresce troppo, fai il backup del DB ed effettua il TRUNCATE della tabella.
Ciao,
bellissimo post. Ho un problema: terminata l'installazione di loganalyzer, al momento di andare sull'interfaccia web per iniziare la configurazione (primo accesso) ho solo una pagina bianca o un errore 500. Nel log di apache ho la seguente riga:
PHP Fatal error: Unknown: Failed opening required '/var/www/_GMweb/loganalyzer/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
Utilizzo una centos 6.5 e apache 2.2.15.
Hai qualche idea? Grazie in anticipo.
Hai verificato che i permessi siano corretti?
Grazie per la risposta. Dopo un po' di prove stamattina, credo di aver risolto disabilitando Selinux. Grazie ancora!
Ciao,avrei bisogno di scrivere il log in ingresso al server su un un files diverso del sistema per differenziarli.come posso fare con rsyslog?
ora praticamente scrive tutto su un files syslog ed è un gran casino.
Lucio