Logging su MySQL: differenze tra le versioni
S3v (discussione | contributi) mNessun oggetto della modifica |
m (rimossa dalle adozioni, aggiunta Wheezy tra le supportate (vedere discussione)) |
||
(4 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Lenny|Squeeze|Wheezy}} | {{Versioni compatibili|Lenny|Squeeze|Wheezy}} | ||
{{Box| Per Wheezy e successive | A partire da Debian 7 ([[Wheezy]]) è possibile installare il pacchetto '''syslog-ng-mod-sql'''.}} | |||
== Premessa == | == Premessa == | ||
Questa piccola guida, in questa sua prima versione, descrive velocemente la procedura per abilitare il logging di sistema su di un database MySQL. Essendo questo un compito di indirizzo prettamente professionale, non mi sono soffermato più di tanto nello spiegare i dettagli della procedura. Tantomeno ho elencato nel dettaglio '''tutti''' i comandi necessari, presumendo che chi legge abbia le competenze necessarie a completare le mie eventuali lacune. Qualsiasi commento o correzione è il benvenuto e sarà integrato in eventuali riscritture di questa guida che, in questa stesura, è poco più della traccia da me seguita in diverse occasione per realizzare quanto spiegato. | Questa piccola guida, in questa sua prima versione, descrive velocemente la procedura per abilitare il logging di sistema su di un database MySQL. Essendo questo un compito di indirizzo prettamente professionale, non mi sono soffermato più di tanto nello spiegare i dettagli della procedura. Tantomeno ho elencato nel dettaglio '''tutti''' i comandi necessari, presumendo che chi legge abbia le competenze necessarie a completare le mie eventuali lacune. Qualsiasi commento o correzione è il benvenuto e sarà integrato in eventuali riscritture di questa guida che, in questa stesura, è poco più della traccia da me seguita in diverse occasione per realizzare quanto spiegato. | ||
Riga 69: | Riga 72: | ||
</pre> | </pre> | ||
{{Autori | |||
Autore | |Autore = [[Utente: Keltik|Keltik]] | ||
|Estesa_da = | |||
|Verificata_da = | |||
|Numero_revisori = 0 | |||
}} | |||
[[Categoria:Database server]] | [[Categoria:Database server]] | ||
[[Categoria:Monitoraggio]] | [[Categoria:Monitoraggio]] |
Versione attuale delle 10:34, 30 nov 2015
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 5 "lenny" Debian 6 "squeeze" Debian 7 "wheezy" |
Per Wheezy e successive A partire da Debian 7 (Wheezy) è possibile installare il pacchetto syslog-ng-mod-sql. |
Premessa
Questa piccola guida, in questa sua prima versione, descrive velocemente la procedura per abilitare il logging di sistema su di un database MySQL. Essendo questo un compito di indirizzo prettamente professionale, non mi sono soffermato più di tanto nello spiegare i dettagli della procedura. Tantomeno ho elencato nel dettaglio tutti i comandi necessari, presumendo che chi legge abbia le competenze necessarie a completare le mie eventuali lacune. Qualsiasi commento o correzione è il benvenuto e sarà integrato in eventuali riscritture di questa guida che, in questa stesura, è poco più della traccia da me seguita in diverse occasione per realizzare quanto spiegato.
Buona lettura e happy hacking!
Logging su MySQL
Spesso, specie in ambiente professionale, si ha la necessità di memorizzare i log di sistema in una località centralizzata vuoi per motivi di sicurezza che di semplice monitoraggio. Syslogd permette di implementare in maniera banale questa possibilità, ma a volte ci si trova nella necessità/desiderio di voler dare a questi log una forma facilmente gestibile e interrogabile come ad esempio un database MySQL. Esiste un syslogger che fa questo per noi, si tratta di syslogd-ng, però non sempre è possibile sostituire il logger in maniera indolore e trasparente. In tutte queste situazioni viene in nostro aiuto una piccola utility : sqlsyslogd, realizzata da Przemyslaw Frasunek.
Sqlsyslogd è un wrapper per syslogd scritto in C per FreeBSD, ma è comunque compatibile con qualsiasi piattaforma POSIX e ANSI-C compliant (chi scrive non ha mai avuto problemi nell'usarlo su piattaforma GNU/Linux, in particolare Debian).
Andiamo con ordine.
Ottenere i sorgenti
Procuriamoci il sorgente all'indirizzo: sqlsyslogd.c. Procuriamoci anche il MakeFile e lo script che useremo per creare il nostro database: sqlsyslogd.sql
Compilazione del logger
Una volta ottenuto il sorgente del file compiliamolo digitando semplicemente:
$ make
nella directory in cui abbiamo scaricato i nostri file.
Ora copiamo l'eseguibile creato in /usr/local/sbin
(ad esempio):
$ su Password: # cp sqlsyslogd /usr/local/sbin/
Creare il database
Creiamo il database con il comando:
$ mysql -u root -p < sqlsyslogd.sql
questo comando crea il database sqlsyslogd, che contiene l'unica tabella dei log.
Fermiamoci un momento a spiegare il funzionamento del wrapper: sqlsyslogd è un programma C che "intercetta" le chiamate di syslogd e le redirige verso una pipe. Dato che il syslogger syslogd non può puntare direttamente ad un altro programma (come invece può fare il suo cugino di FreeBSD), ma soltanto ad una named pipe, abbiamo bisogno di un ulteriore passaggio.
Il Wrapper
Scarichiamo questo script perl e rinominiamolo ad esempio in "sqlsyslogd.wrapper".
Questo script crea per noi un FIFO socket. Syslogd manderà i suoi messaggi al socket, e il wrapper li inoltrerà a sqlsyslogd.
Configurazione
Creaimo il file /usr/local/etc/sqlsyslogd.conf
e come unica riga, digitiamo la password necessaria a poter scrivere nel nostro database. Dato che sqlsyslogd gira con le credenziali dell'utente che lo lancia e che - presumibilmente - vorremo avviarlo al boot della nostra macchina, potremo creare un utente apposito o più semplicemente usare le credenziali dell'utente "root". In questo caso in sqlsyslogd.conf
inseriremo la password di root (occhio ai permessi su questo file!).
Lo script perl permette di specificare sia il server che ospita il database, sia l'utente con con collegarsi. Il mio suggerimento, rivolto a ovvie questioni di sicurezza, consiste nel creare un apposito utente con cui far girare il wrapper e con cui accedere al database!!
Editiamo il file sqlsyslogd.wrapper
e adattiamolo alla nostra configurazione e alle nostre esigenze.
Editiamo /etc/syslogd.conf
e scriviamo una riga del tipo:
*.* |/path/to/sqlsyslogd.wrapper
Possiamo specificare tutte le facilities che vogliamo e loggare soltanto quello che ci interessa. La direttiva dell'esempio redirige tutto quello che viene loggato.
Assicuriamoci che sqlsyslogd e sqlsyslogd.wrapper vengano lanciati ad ogni riavvio della macchina, aggiungendoli ad esempio ad uno script di avvio.
Conclusioni
Finalmente possiamo riavviare syslogd e cominciare a importare in tempo reale i nostri log in MySQL!!
# killall -HUP syslogd
o anche:
# /etc/init.d/sysklogd reload
Guida scritta da: Keltik | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |