|
|
Riga 1: |
Riga 1: |
| ==Introduzione== | | =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. |
|
| |
|
| Molto spesso ci si trova nella necessit� di avere un mirror completo di una distribuzione Debian per uno o pi� computer che non sono connessi ad internet (o lo sono tramite una connessione troppo lenta).
| | Buona lettura e happy hacking! |
| Debmirror ci viene in aiuto, dando la possibilit� di creare un mirror locale.
| |
|
| |
|
| | =Logging su MySQL= |
| | Spesso, specie in ambiente professionale, si ha la necessit di memorizzare i logs 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 logs 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 [mailto:venglin@freebsd.lublin.pl Przemyslaw Frasunek]. |
|
| |
|
| ==Installazione==
| | 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). |
|
| |
|
| Per installare debmirror � sufficiente un
| | Andiamo con ordine: |
| | |
| | ==Ottenere i sorgenti== |
| | Procuriamoci il sorgente all' indirizzo: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.c sqlsyslogd.c]. Procuriamoci anche il [http://www.frasunek.com/sources/security/sqlsyslogd/Makefile MakeFile] e lo script che useremo per creare il nostro database: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.sql sqlsyslogd.sql] |
| | |
| | ==Compilazione del logger== |
| | Una volta ottenuto il sorgente del file compiliamolo digitando semplicemente: |
| | <pre> |
| | $ make |
| | </pre> |
| | nella directory in cui abbiamo scaricato i nostri files.<br> |
| | ora copiamo l' eseguibile creato in /usr/local/sbin (ad esempio): |
| <pre> | | <pre> |
| # apt-get install debmirror | | $ su |
| | Password: |
| | # cp sqlsyslogd /usr/local/sbin/ |
| </pre> | | </pre> |
| Un consiglio, nel caso in cui venga creato un mirror per effettuare una installazione od un aggiornamento per un computer non connesso in rete: usate un disco fisso esterno (nel caso in cui il mirror debba essere trasportato su un altro computer) o di un DVD-RW (nel caso in cui il mirror sia parziale).
| |
|
| |
|
| |
| ==Configurazione==
| |
|
| |
| Il programma non richiede configurazione, in quanto tutti gli eventuali parametri devono essere passati tramite riga di comando.
| |
|
| |
|
| |
| ==Opzione e Parametri==
| |
|
| |
|
| La 'sintassi' del comando � la seguente:
| | ==Creare il database== |
| | Creiamo il database con il comando: |
| <pre> | | <pre> |
| $ debmirror [OPZIONI] mirrordir | | $ mysql -u root -p < sqlsyslogd.sql |
| </pre> | | </pre> |
| con i seguenti parametri:
| | questo comando crea il database sqlsyslogd, che contiene l' unica tabella logs. |
| | |
| ; mirrordir : Questo parametro obbligatorio indica dove deve essere creato il mirror. Attenzione alla directory indicata in quanto, come opzione di default, vengono rimosse quelle directory e file che non appaiono nel repository di cui si effettua il mirroring
| |
| | |
| ; --debug : Abilita il Debug
| |
| | |
| ; --progress -p : Visualizza una barra di avanzamento per monitorare lo stato del mirroring
| |
| | |
| ; --verbose -v : Visualizza una barra di avanzamento tra i download dei file
| |
| | |
| ; --source : Include i pacchetti dei sorgenti nel mirror [Default]
| |
| | |
| ; --nosource: Non include i sorgenti dei programmi nel mirror
| |
| | |
| ; --md5sums -m: Utilizza l'md5 per verificare quali file nel mirror locale sono corretti ed aggiornati, � disabilitato di default in quanto lento e 'paranoico'
| |
| | |
| ; --passive: Esegui il download in modalit� 'passiva'
| |
| | |
| ; --host=remotehost -h: Indica qualche host utilizzare, si invita a controllare il mirror pi� vicino a questo indirizzo: http://www.debian.org/mirror/list , consentendo cos� una migior ripartizione del traffico sui mirror presenti. (Default: ftp.debian.org)
| |
| | |
| ; --user=remoteusername -u : Sperifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous]
| |
| | |
| ;--method=ftp|hftp|http|rsync -e : Specifica quale metodo utilizzare per effettuare il download dei file. Sono supportati: ftp, http, hftp (ftp over http) rsync (per questo protocollo bisogna preporre ':' alla root directory dell'host remoto, ad esempio ":debian")
| |
| | |
| ; --proxy=http://user:pass@url:port/:
| |
| Specifica i parametri per la connessione tramite proxy
| |
| | |
| ; --timeout=seconds -t: Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi]
| |
| | |
| ; --root=directory -r directory: Specifica la root directory dell'host remoto. Normalmente � "/debian". In questa directory � contenuta la directory "dists". [Default: /debian]
| |
| | |
| ; --dist=foo[,bar,..] -d foo: Specifica la distribuzione (woody, sarge, sid). Possono essere indicate tutte e tre (-dist=woody,sarge,sid oppure -d woody -d sarge -d sid); i link (stable, unstable, testing) potrebbero non funzionare, quindi si invita ad utilizzare il nome della release). [Default: sid]
| |
|
| |
|
| ; --section=foo[,bar,..] -s foo: Specifica la sezione (o le sezioni) di Debian di cui effettuare il mirroring. [Default: main,contrib,non-free,main/debian-installer]
| | 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: |
|
| |
|
| ;--arch=foo[,bar,..] -a foo: Specifica la architettura (o le architetture) di cui effettuare il mirroring. (Default: i386)
| | ==Il Wrapper== |
| | Scarichiamo questo [http://www.frasunek.com/sources/security/sqlsyslogd/contrib/sqlsyslogd-on-redhat-7.3 script perl] e rinominiamolo ad esempio in "sqlsyslogd.wrapper".<br> |
| | Questo script crea per noi un FIFO socket. Syslogd mander� i suoi messaggi al socket, e il wrapper li inoltrer� a sqlsyslogd. |
|
| |
|
| ; --cleanup: Esegue una pulizia della directory in cui verr� creato il mirror. [Default: on]
| | =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 creadenziali dell' utente "root". In questo caso in sqlsyslogd.conf inseriremo la password di root (occhio ai permessi su questo file!). |
|
| |
|
| ; --nocleanup: Non esegue la pulizia del mirror al termine della creazione dello stesso
| | 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!! |
|
| |
|
| ; --postcleanup: Esegue la pulizia del mirror locale solo quando il mirroring � terminato senza errori
| | Editiamo il file sqlsyslogd.wrapper e adattiamolo alla nostra configurazione e alle nostre esigenze. |
| | |
| ; --ignore=regex: Non elimina i file che rispondono l'espressione regolare [regexp] (pu� essere usato pi� volte)
| |
| | |
| ; --exclude=regex: Non esegue il download dei file che soddisfano l'espressione regolare (pu� essere usato pi� volte)
| |
| | |
| ;--exclude-deb-section=regex: Non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (pu� essere usato pi� volte)
| |
| | |
| ; --limit-priority=regex: Limita il download ai file che soddisfano l'espressione regolare per quanto riguarda la priorit� del pacchetto (reguired, extra, optional, ...); (pu� essere usato pi� volte)
| |
| | |
| ; --include=regex: Vengono inclusi i file che soddisfano l'espressione regolare [regexp] (pu� essere usato pi� volte)
| |
| | |
| ; --skippackages: Non scarica i file Packages e Sources (utile se questi file sono gi� aggiornati)
| |
| | |
| ; --getcontents: Scarica il file Contents.arch.gz
| |
| | |
| ;--ignore-missing-release: Non lancia un errore se il file Release non � presente nel mirror
| |
| | |
| ;--ignore-release-gpg: Non lancia un errore se non � presente il file Release.gpg (consigliato)
| |
| | |
| ;--dry-run: Esegue una simulazione, senza scaricare i file e pulire il mirror.
| |
| | |
| ;--rsync-options=options: Specifica le opzioni da passare a rsync. [Default: -aIL --partial]
| |
| Utile � anche l'opzione "--bwlimit=x" che consente di impostare la larghezza di banda massima da usare per il download
| |
| | |
| ;--ignore-small-errors: Ignora degli errori 'piccoli' o 'poco sognificanti' come il non aver trovato un file al 'primo colpo' e il dover procedere ad un altro tentativo... Consigliato
| |
| | |
| ;--help: Visualizza un help.
| |
| | |
| | |
| ==Utilizzo==
| |
| | |
| L'utilizzo � semplice: basta indicare solo quello necessario e lui provveder� a scaricare tutti i file necessari.
| |
| Verr� creata una struttura uguale a quella di un mirror Debian ed eventualmente (se gi� presente) verranno controllati ed aggiornati i pacchetti vecchi.
| |
| | |
| Ecco alcuni esempi di utilizzo:
| |
| * Mirror completo di sarge:
| |
|
| |
|
| | Editiamo /etc/syslogd.conf e scriviamo una riga del tipo: |
| <pre> | | <pre> |
| $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg /path/to/dir
| | *.* |/path/to/sqlsyslogd.wrapper |
| </pre> | | </pre> |
| | Possiamo specificare tutte le facilities che vogliamo e loggare soltano quello che ci interessa. La direttiva dell' esempio regirige 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. |
|
| |
|
| ('''--ignore-small-errors --ignore-release-gpg''' le includo sempre, in quanto potrebbero dare dei problemi; eventualmente si pu� provare a lanciare il processo senza gli 'ignore' per controllare eventuali errori nel caso il processo non vada a buon fine.
| | =Conclusioni= |
| | | Finalmente possiamo riavviare syslogd e cominciare a importare in tempo reale i nostri logs in MySQL!! |
| * Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti:
| |
| <pre> | | <pre> |
| $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --exclude="games" --nosources /path/to/dir
| | # killall -HUP syslogd |
| </pre> | | </pre> |
| | | o anche |
| * Mirror di tutta Sarge (Sorgenti esclusi):
| |
| <pre> | | <pre> |
| $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --nosources /path/to/dir
| | # /etc/init.d/sysklogd reload |
| </pre> | | </pre> |
|
| |
|
| Come potete vedere da questi 3 esempi, l'utilizzo � molto semplice ed immediato.
| | ---- |
| | | Autore: [[User:Keltik|Keltik]] |
| ==Debmirror e Cron==
| |
| | |
| Pu� essere utile, per manterene aggiornato il mirror, lanciare debmirror ad intervalli regolari (magari ogni giorno)...
| |
| Cos�, aggiungengo una semplice riga a /etc/crontab � possibile programmare l'esecuzione di debmirror.
| |
| Ecco un esempio, che programma l'esecuzione del mirroring alle 00.00 di ogni giorno:
| |
| <pre>
| |
| 0 0 * * * maxer /usr/bin/debmirror -d sarge --ignore-small-errors --ignore-release-gpg --arch=none --nosource /store3/deb/
| |
| </pre>
| |
| cos� il mirror verr� aggiornato di notte, evitando eventuali problemi di banda o di carico eccessivo del sistema!
| |
| | |
| | |
| ==Considerazioni sull'Utilizzo==
| |
| | |
| Prima di utilizzare questo strumento per installare o aggiornare Debian su un computer sprovvisto di connessione ad internet e/o con una connessione lenta, vorrei porre in luce alcune questioni:
| |
| * L'utilizzo smodato di questo strumento genera un aumento di banda utilizzata (da parte dei mirror) considerevole (nell'ordine di Gbyte), uno spreco per un solo computer.
| |
| * Spesso si scaricano pi� programmi di quelli necessari (anzi, spesso quelli non utilizzati sono pi� del doppio di quelli utilizzati); consiglio quindi il download della prima e della seconda ISO di Sarge, o il primo DVD, in quanto su questi � presente il 90% dei pacchetti pi� utilizzati in ambito 'domestico'.
| |
| * [http://guide.debianizzati.org/index.php/Apt-zip:_aggiornamenti_senza_una_connessione_veloce Apt-zip] � spesso molto pi� comodo da utilizzare, ed anche pi� veloce...
| |
| Non dimentichiamoci che le risorse dei mirror sono 'donate' al progetto Debian, ed un aumento esponenziale o troppo sostenuto delle risorse richieste potrebbe compromettere la disponibilit� dell'hoster...
| |
| | |
| Inoltre debmirror non � designato propriamente per generare 'mirror di installazione', ma per creare mirror locali in LAN di medie dimensioni (anche se oramai pu� venir tranquillamente sostituito da apt-cache o simili).
| |
| | |
| Dopo queste piccole considerazioni, happy Debian!
| |
| | |
| Lettura Consigliata: [[Apt-Proxy: un proxy per i pacchetti Debian]]
| |
| | |
| ---- [[User:MaXeR|MaXeR]]
| |
| | |
| [[Categoria:Repository]]
| |