Cacti: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(Aggiunto template autori)
 
(20 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Versioni compatibili|Lenny|Squeeze|Wheezy}}
Questo articolo affronta il problema della gestione della banda in Apache (Ver. 1 e Ver. 2), mostrando come installare e configurare tre diversi moduli utilizzabili a tale fine:
==Introduzione==
==mod_bandwidth==
[http://www.cacti.net Cacti] è uno strumento completo per monitorare il sistema che si poggia su snmpd (lo stesso usato anche da mrtg).
* HomePage: http://www.cohprog.com/mod_bandwidth.html
Uno dei punti di forza di Cacti è l'elevata facilità di configurazione, senza per questo non garantire una elevata flessibilità.
* Licenza: Apache Group licence
* Copyright: Yann Stettler and CohProg S�RL
* Versione Apache: 1
==bw_mod==
* HomePage: http://www.ivn.cl/apache/
* Licenza: Apache 2.0 License/[http://www.ivn.cl/apache/LICENSE.txt Ivn Project License]
* Copyright: Ivan Barrera A.
* Versione Apache: 2
==mod_bwshare==
* HomePage: http://www.topology.org/src/bwshare/README.html
* Licenza: [http://www.topology.org/src/bwshare/LICENCE Alan Kennington's modified Artistic Licence]
* Copyright: Alan Kennington
* Versione Apache: 1 e 2


=Installazione=
==Installazione==
Cacti è già disponibile nei repository Debian, e quindi installabile tramite apt-get.
Per il suo funzionamento richiede un database [http://www.mysql.com mysql] a cui appoggiarsi per memorizzare i dati e il [http://geekcorp.com/snmpd/ server snmpd] per accedere ai dati da elaborare, oltre a questi programmi, inoltre, è necessario installare (o avere già configurato) il webserver [http://www.apache.org Apache] con l'estensione [http://www.php.net PhP].<br><br/>
Nel seguito della guida verrà trattata una veloce installazione di Apache e di MySQL; per approfondimenti si consiglia di seguire una delle guide dettagliate presenti nel wiki:
* [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]
* [[LAMP: Linux, Apache, MySQL e PHP]]
<br/>
Per una installazione veloce:
<pre>
# apt-get install snmpd mysql-server snmp
</pre>


==mod_bandwidth==
nella sezione ''configurazione'' analizzeremo la configurazione di questi due server.
Il modulo '''mod_bandwidth''' � installato di default insieme al server apache; lo possiamo trovare in '''/usr/lib/apache/1.3/'''.
Se questo modulo dovesse dare problemi (esempi: non imposta correttamente la banda, ma sembra che i limiti che impostiamo siano visti come bit e non come byte, non accetta la direttiva MaxConnection), vi consiglio di reinstallarlo come descritto qui sotto.


* rechiamoci sul sito del produttore: http://www.cohprog.com/mod_bandwidth.html e scarichiamo l'ultima versione (link diretto:
Ora installiamo Cacti (che installerà anche ''apache'', ''php4'', ''php4-mysql'', ''php4-cli'', e altre applicazioni necessarie al suo funzionamento):
ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c).<br/>
* per potre compilare questo modulo, abbiamo bisogno del pacchetto '''apache-dev'''. Per installarlo � sufficiente dare:
<pre>
<pre>
# apt-get install apache-dev
# apt-get install cacti cacti-spine
</pre>
</pre>
* ora siamo pronti per compilare:
 
Durante l'installazione di Cacti, verranno poste delle domande (che qui riporto con delle risposte di esempio):
* '''MySQL server host name ''': ''localhost'';
* '''Database name for cacti ''': ''cacti'';
* '''Cacti database username''': ''cacti'';
* '''Cacti user password''': ''cactipass'';
* '''Webserver type''': nel nostro caso selezioniamo ''Apache-SSL'', ma è possibile effettuare la scelta più conveniente per il proprio sistema.
 
{{Box|Nota Bene|durante la configurazione ci viene ricordato che la configurazione di mysql deve essere fatta manualmente, come vedremo in seguito}}
 
==Configurazione==
===MySql===
Se è la prima installazione di MySql sulla macchina, è consigliato cambiare la password di root in quanto, di default, non è impostata:
<pre>
<pre>
$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth.so
#/usr/bin/mysql
mysql> set password for root@localhost=password('rootpw');
mysql> exit
</pre>
</pre>
* una volta pronto il modulo, eseguiamo i seguenti comandi:
 
Una volta impostata, procediamo con la creazione del database e dell'utente che avrà accesso al database ''cacti'';
<pre>
<pre>
# cd /usr/lib/apache/1.3/
mysql> create database cacti;
# mv mod_bandwidth.so mod_bandwidth.so.bk
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipass';
# mv /home/maxer/mod_bandwidth.so ./
mysql> flush privileges;
mysql> exit
</pre>
</pre>


in questo modo abbiamo creato una copia del modulo precedente, se presente, e poi abbiamo spostato il modulo appena compilato nella cartella dei moduli di apache.
Ora non ci resta che sistemare il database, creando le tabelle ed inserendo i dati necessari:
<pre>
# zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u root -p cacti
</pre>


Bene, la configurazione di MySql è terminata.


===Aggiornamento===
===Snmpd===
La configurazione di snmpd, se Cacti è installato sulla stessa macchina che si vuole monitorare, è limitata a dare l'accesso in lettura a snmpd, così da permetterne l'interrogazione da parte di Cacti.


Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto
Per fare questo, modifichiamo il file <code>/etc/snmp/snmpd.conf</code> con il nostro editor di testo preferito, e facciamo in modo che le righe:
apache viene aggiornato, infatti, il modulo appena creato verr� sovrascritto con quello `vecchio`, e apache non si riavvier�...
<pre>
Una alternativa � creare il modulo con un altro nome:
com2sec paranoid  default        public
#com2sec readonly  default        public
#com2sec readwrite default        private
</pre>
diventino:
<pre>
<pre>
$ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth_new.so
#com2sec paranoid  default        public
# cp mod_bandwidth_new.so /usr/lib/apache/1.3/mod_bandwidth_new.so
com2sec  readonly  127.0.0.1       public
# cd /usr/lib/apache/1.3/
#com2sec readwrite default        private
# cp 500mod_bandwidth.info 500mod_bandwidth_new.info
</pre>
</pre>


Ora bisogna modificare il file '''500mod_bandwidth_new''' modificando il nome del
Una volta salvato il tutto, riavviamo snmpd con un semplice:
vecchio modulo con quello nuovo:
<pre>
# /etc/init.d/snmpd restart (oppure reload)
</pre>
Ora bisogna modificare il file <code>/etc/default/snmpd</code> cambiando la riga:
<pre>
<pre>
LoadModule: bandwidth_module /usr/lib/apache/1.3/mod_bandwidth-new.so
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
Description: Bandwidth management on a per-connection basis
</pre>
</pre>
 
in:
Ora � necessario modificare il file '''/etc/apache/modules.conf''': la nuova direttiva da inserire, sostituendo eventualmente quella preesistente, � la seguente:
<pre>
<pre>
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth_new.so
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
</pre>
</pre>
 
Per verificare il corretto funzionamento del demone può essere utile il seguente comando:
==bw_mod==
Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo:
<pre># tar vzxf bw_mod-6.0.tgz</pre>
spostiamoci nella cartella appena creata (''bw_mod-6.0.tgz'') e verifichiamo che sia presente il file ''bw_mod-6.0.c''.
 
Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto '''apache2-dev''':
<pre># apt-get install apache2-dev</pre>
Bene, ora compiliamo tramite il comando ''/usr/bin/apsx2'':
<pre># /usr/bin/apxs2 -i -a -c bw_mod-0.6.c</pre>
Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file ''/etc/apache2/httpd.conf'':
<pre>Include /etc/apache2/sysconfig.d/loadmodule.conf
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so</pre>
{{Box | Nota |Apache2 usa come file di configurazione ''/etc/apache2/apache2.conf''; tuttavia, per retrocompatibilit�, � presente anche un file ''/etc/apache2/httpd.conf'' in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema '''mods-available/mods-enabled'''.
 
In questo caso non dobbiamo preoccuparci, in quanto nel file ''apache2.conf'' c'� un richiamo a ''httpd.conf''.}}
 
==mod_bwshare==
 
=Configurazione=
 
==mod_bandwidth==
Ora configuriamo apache per utilizzare mod_bandwidth.<br/>
Aggiungiamo il modulo al file '''/etc/apache/modules.conf'''. Per fare questo abbiamo due possibilit�:
* modificare a mano il file, aggiungendo la seguente riga, alla finedel file:
<pre>
<pre>
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
# snmpwalk -Os -c public -v 1 INDIRIZZO_IP_DA_TESTARE system
</pre>
</pre>
*utilizzare modules-config:
Si dovrebbe ottenere come risposta una lunga stringa di dati e non una scoraggiante riga come questa:
<pre>
<pre>
modules-config apache enable mod_bandwidth
Timeout: No Response from INDIRIZZO_IP_DA_TESTARE
</pre>
</pre>
 
A partire da Debian Squeeze Cacti non riesce a generare tutti grafici nonostante snmpd sia installato e configurato correttamente, perchè dalla versione 5.4.2.1 di ''net-snmp'' sono sorti dei conflitti di licenza contro i file MIB di IETF e IANA che fino a Debian Lenny erano contenuti nel pacchetto ''libsnmp-base''. Ovviamente la rigorosa politica di Debian riguardo alle licenze free ne ha portato all'esclusione.
Creiamo le cartelle temporanee per mod_bandwidth:
<br/>
Niente panico: questi file su Debian esistono ancora, ma stanno nei repository non-free, nel pacchetto ''snmp-mibs-downloader'' (che praticamente è uno script che li scarica ed installa).
<br/>
Prima di tutto bisogna quindi aggiungere il repository ''non-free'' al nostro sources.list, poi aggiornare la lista dei pacchetti e installare ciò che ci serve:
<pre>
<pre>
# mkdir /tmp/apachebw
apt-get update
# mkdir /tmp/apachebw/master
apt-get install snmp-mibs-downloader
# mkdir /tmp/apachebw/link
# chown -R www-data:www-data /tmp/apachebw
# chmod -R 775 /tmp/apachebw
</pre>
</pre>
(ricordiamoci che � possibile che qualche script ripulica la directory '''/tmp''', quindi cambiamo la posizione di queste cartelle con la direttiva BandWidthDataDir).
Poi bisogna rettificare la configurazione di snmpd. Con Debian Squeeze la configurazione di snmpd utilizza per default un nuovo formato che comprende regole di ACL, ecc.
 
<br/>
Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:
Per mettere il demone in ascolto su tutte le interfacce di rete:
<pre>
<pre>
# /etc/init.d/apache reload
#agentAddress  udp:127.0.0.1:161
agentAddress  udp:161
</pre>
</pre>
 
Per esporre tutte le informazioni disponibili alla community public:
===Note per il corretto funzionamento===
Per ottenere risultati, � importante che non ci siano dei link morti nella directory '''link''' di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.
 
Potrebbe essere una buona idea, a questo scopo, eseguire lo script '''cleanlink.pl''', che provvede a rimuovere automaticamente i link morti.
 
 
 
===Direttive globali di configurazione===
 
===='''BandWidthDataDir'''====
'''Sintassi''': BandWidthDataDir <directory><br/>
'''Default''': "/tmp/apachebw"<br/>
'''Contesto''': server config<br/>
Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in debian utilizza l'utente ed il gruppo www-data)
 
 
===='''BandWidthModule'''====
'''Sintassi''': BandWidthModule <On|Off><br/>
'''Default''': Off<br/>
'''Contesto''': per server config<br/>
Abilita o disabilita il modulo.
 
'''NOTA:''' Per utilizzarlo all'interno di un virtual host, � necessario inserire la direttiva '''BandWidthModule On''' all'interno del blocco del virtual host. Se viene attivato globalmente (cio� all'interno del file httpd.conf, fuori da ogni blocco), il modulo � attivo automaticamente in tutti i sottoblocci (Virtual Host, etc..)
 
 
===='''BandWidthPulse'''====
'''Sintassi''': BandWidthPulse <microseconds><br/>
'''Default''':<br/>
'''Contesto''': per server config<br/>
 
Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalit� normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile � di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e cos� via... Impostando questa direttiva, verr� cambiato l'algoritmo in modo che il server
aspetter� sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varier� di conseguenza, cos� da rispettari i criteri indicati nelle altre direttive. Il valore � in microsecondi.
 
'''Esempio:'''
<pre>
<pre>
BandWidthPulse 1000000 #1 secondo
#rocommunity public  default    -V systemonly
rocommunity public  default
</pre>
</pre>
Se oltre a questa direttiva � presente un limite a 512B, il server trasmetter� 512B, aspetter� un secondo, trametter� 512B, aspetter� un secondo e cos� via.
Per aggiungere grandezze da monitorare tramite script esterni:
 
 
===Direttive per la configurazione di Directory e/o VirtualServer===
 
===='''BandWidth'''====
'''Sintassi''': BandWidth <domain|ip|all> <rate><br/>
'''Default''': none<br/>
'''Contesto''': per directory, .htaccess<br/>
 
Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all).
Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) '''<rate>''' deve essere espresso in Byte/secondo. Impostato a "0" indica nessun limite di banda. Possono essere impostati pi� limiti per la stessa directory; in questo caso, �
importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che
rispecchia la situazione
 
'''Esempio:'''
<pre>
<pre>
BandWidth ecp.fr 0
extend mail_incoming    /usr/bin/sudo /usr/local/sbin/mail-io-stats incoming
BandWidth 138.195 0
extend mail_cmpleted    /usr/bin/sudo /usr/local/sbin/mail-io-stats completed
BandWidth all 1024
</pre>
</pre>
In questo esempio, viene limitata la banda a:
Infine si riavvia snmpd con:
* nessun limite per gli appartenenti al dominio .ecp.fr e alla rete 138.195. ;
* 1024Bytes/secondo per tutti gli altri.
 
 
===='''LargeFileLimit'''====
'''Sintassi''': LargeFileLimit <filesize> <rate><br/>
'''Default''': none<br/>
'''Contesto''': per directory, .htaccess<br/>
 
Imposta un limite '''<rate>''' da usare quando si trasferiscono file di dimensioni uguali o maggiori a <filesize>
E' possibile utilizzare pi� direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a "0", non sar� impostato alcun limite (rimarr�, ovviamente, l'eventuale limite impostato in BandWidth). Se viene impostato a "-1", invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva BandWidth) per i file la cui dimensione rispecchia quella direttiva.
 
'''Esempio:'''
<pre>
<pre>
LargeFileLimit 200 3072
/etc/init.d/snmpd restart
LargeFileLimit 1024 2048
</pre>
</pre>
Queste direttive portano a questa situazione:
A questo punto ''snmpd'' sarà in grado, grazie ai preziosi file MIB appena installati, di fornire ai client tutte le informazioni che servono.
* i file pi� piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva BandWidth);
* i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
* i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.
 
 
===='''MaxConnection'''====
'''Sintassi''': MaxConnection <connections><br/>
'''Default''': 0 (illimitate)<br/>
'''Contesto''': per directory, .htaccess<br/>
 
Imposta il numero di connessioni massime che possono avvenire  contemporaneamente.Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a "0" (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).
 
 
===='''MinBandWidth'''====
'''Sintassi''': MinBandWidth <domain|ip|all> <rate><br/>
'''Default''': all 256<br/>
'''Contesto''': per directory, .htaccess<br/>


Imposta una banda minima per il trasferimento dei dati. Questa direttiva pu� sovrascrivere le direttive BandWidth e LargeFileLimit, in quanto, in presenza di un numero elevato di connessioni, verr� garantita a tutte la larghezza indicata con questa direttiva, anche se il totale superer� i limiti. Il primo argomnto � da usarsi come per la direttiva BandWidth. deve essere espresso in Byte/Secondo; se viene impostato a 0, verr� usato il valore di default (256).
===PHP===
Cacti utilizza PHP sia come estensione di Apache, sia come ''cli'' (common line interpreter).
Per evitare problemi, è necessario controllare che l'estensione per mysql sia abilitata nei seguenti file:
* '''/etc/php4/cli/php.ini''' per quanto riguarda php4-cli;
* '''/etc/php4/apache/php.ini''' per quanto riguarda php e apache.


'''Esempio :'''
La modifica di questi file consiste, in pratica, nella rimozione del <code>''';'''</code> di commento alla seguente riga:
<pre>
<pre>
BandWidth all 3072
;extension=mysql.so
MinBandWidth all 1024
</pre>
</pre>


Assumendo la presenza delle precedenti direttive analizziamo i casi in base
===Cacti===
alle connessioni:
Per terminare la configurazione base del sistema, rechiamoci al seguente indirizzo:
* una connessione: velocit� di trasferimento = 3072 Bytes/sec.
* due connessioni: velocit� di trasferimento = 1536 Bytes/sec.
* tre o pi� connessioni: velocit� di trasferimento = 1024 Bytes/sec.
 
Se MinBandWidth � impostato a "-1" accade che:
* se c'� solo una connessione, il file viene trasferito a 3072 Bytes/sec.
* se ci sono una o pi� connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocit� non dipende pi� dal numero di connessioni, ma solo dai valori delle direttive.
 
Ovviamente, la velocit� di trasferimento totale non potr� mai superare la vostra larghezza di banda...


{{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva "BandWidth" sia uno impostato nella direttiva "LargeFileLimit", verr� applicato il pi� piccolo (ma mai minore a quello eventialmente indicato nella direttiva "MinBandWidth")}}
http://localhost/cacti (se è stato scelto Apache/Apache2)<br/>
https://localhost/cacti (se è stato scelto Apache-SSL)


==bw_mod==
per completare l'installazione.
In Apache2 la configurazione globale del server pu� essere separata da quella dei VHosts e delle Directories. Sono presenti, infatti, due files: <tt>/etc/apache2/apache2.conf</tt>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <tt>httpd.conf</tt>); e <tt>/etc/apache2/sites-enabled/000-default</tt>, in cui ci sono le direttive per VHosts e Directories (in realt� � un link simbolico al file <tt>/etc/apache2/sites-available/default</tt>).<br/>
Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in <tt>apache2.conf</tt> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <tt>apache2.conf</tt>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <tt>000-default</tt> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/>
{{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non � possibile inserire le direttive in questi files.<br/>
In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove � indicata la possibilit� d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}}


==='''Direttive globali'''===
Premiamo ''Next>>'' dopo la prima schermata di presentazione;<br/>
===='''BandWidthModule'''====
Selezioniamo ''New Install'' e controlliamo che i dati riportati siamo corretti, altrimenti è possibile modificarli nel file <code>/etc/cacti/debian.php</code>, dopo di che andiamo avanti;<br/>
'''Sintassi''': <tt>BandWidthModule On|Off</tt><br/>
Nella pagina di riepilogo degli eseguibili, controlliamo che siano stati rilevati tutti, altrimenti è necessario installarli manualmente, come  '''SNMP Utility Version''' selezioniamo la 2°: ''NET-Smtp .x'';<br/>
'''Default''': <tt>Off</tt><br/>
Tramite questa direttiva attiviamo o disattiviamo il modulo


===='''BandWidthDebug'''====
Ora siamo davanti alla schermata di LogIn.<br/>
'''Sintassi''': <tt>BandWidthDebug On|Off</tt><br/>
I dati per la prima autenticazione sono:<br/>
'''Default''': <tt>Off</tt><br/>
'''Username:''' ''admin''<br/>
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo).
'''Password:''' ''admin''


===='''BandWidthPacket'''====
verremo obbligati a cambiare password: facciamolo!!!
'''Sintassi''': <tt>BandWidthPacket <Dimensione pacchetti in bytes></tt><br/>
'''Default''': <tt>8192</tt><br/>
Questa direttiva indica la dimensione massima dei pacchetti trasferiti.<br/>
Solitamente, in una configurazione generica, non � necessario modificare questo valore. In caso si voglia ottimizzare la trasmissione dati (e soprattutto se si sa cosa si sa facendo), possono essere specificati valori tra 1024 e 131072.<br/>
In caso si usino valori eccessivi per la propria connessione, il modulo riporter� automaticamente la direttiva a valori pi� bassi.


===='''BandWidthError'''====
==Aggiunta di Monitor==
'''Sintassi''': <tt>BandWidthError <Num. Errore></tt><br/>
Ora il sistema è pronto per essere configurato: dopo aver effettuato il login, infatti, potremo accedere a due aree distinte: ''Console'' e ''Graphs''; la prima rappresenta il centro di controllo, da dove è possibile aggiungere nuovi monitor (''New Graphs'') od aggiungere nuovi computer, router o altro (''Devices'').
''' Default''': <tt>none</tt> (Vengono usati i valori standard di Apache2).<br/>
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con ''MaxConnection'', con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <Num. Errore> ed eventualmente, mettendo mano alla direttiva ErrorDocument in <tt>/etc/apache2/apache2.conf</tt>, quale pagina deve essere mostrata.<br/>
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in apache2.conf la sezione con tutti gli errori che apache pu� restituire al browser).
Se usiamo una pagina d'errore personalizzata, � importante che l'errore associato alla nostra pagina non sia gi� usato da apache (l'autore del modulo ha testato con successo l'errore numero 510).
Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere:
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre>
nella direttiva ErrorDocument in <tt>etc/apache2/apache2.conf</tt>, e
<pre>BandWidthError 510</pre>
nella direttiva BandWidthError.


{{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: � opportuno, quindi, creare pagine pi� grandi di questo valore. }}
L'aggiunta è molto intuitiva, per quanto riguarda l'utilizzo dei monitor già presenti, e normalmente non necessita di modifiche se non riguardanti l'aspetto (colori, unità di misura).


==='''Direttive per la configurazione di Directory e/o VirtualServer'''===
==Gestione Utenti==
Cacti permette la gestione degli utenti, in modo da rendere possibile la visualizzazione delle statistiche ad utenti anonimi (opzione abilitata di default) tramite la pagina https://localhost/cacti/graph_view.php?action=tree, oltre alla definizione di utenti con facoltà ristrette (limitazioni a determinate aree e/o funzioni).
Tutte le opzioni sono modificabili tramite la voce ''User Management'' presente nel menù di sinistra della sezione ''Console''. Le opzioni disponibili sono autoesplicative, e di facile gestione.
L'utente ''guest'' è quello utilizzato per l'accesso anonimo.


===='''ForceBandWidthModule'''====
==Personalizzazione==
'''Sintassi''': <tt>ForceBandWidthModule On|Off</tt><br/>
Cacti permette una vasta gamma di personalizzazioni, che vanno dall'aggiunta di macchine da monitorare, alla definizione di nuove sorgenti di dati, ottenibili tramite snmp o script ad hoc.
'''Default''': <tt>On</tt><br/>
Di default, naturalmente, il modulo processer� e applicher� i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali files debbano essere soggetti alla limitazione di banda, si pu� settare questa direttiva su ''off'', aggiungendo, poi, i tipi di file cui deve essere applicato il limite:
<pre>ForceBandWidthModule Off
AddOutputFilterByType BW_MOD text/html text/php</pre>


===='''BandWidth'''====
Vediamo nel dettaglio come implementare queste soluzioni.
'''Sintassi''': <tt>BandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Default''': <tt>all 0</tt><br/>
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''.


===='''MinBandWidth'''====
==Utilizzo Avanzato==
'''Sintassi''': <tt>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
===Monitorare più macchine===
'''Default''': <tt>all 0</tt><br/>
Se siamo in una rete dove sono presenti più macchine, risulta utile e comodo avere sotto controllo il loro funzionamento.
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''.
Cacti ci viene in contro anche in questo, permettendo di monitorare diverse macchine (definite ''Devices''), il tutto in modo semplice e molto intuitivo.


===='''LargeFileLimit'''====
====Configurazione della macchina====
'''Sintassi''': <tt>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></tt><br/>
Prenderemo in esame il caso in cui la macchina da monitorare sia un computer con Linux (per router, switch ed altri dispositivi simili, si rimanda al manuale specifico).
'''Default''': <tt>none</tt><br/>
Per permettere l'accesso al server snmpd, è sufficiente effettuare la modifica che è stata apportata precedentemente alla macchina su cui è stato installato Cacti.
Con questa direttiva possiamo indicare un limite di trasferimento <Limite in bytes/s> per un determinato tipo di file <Tipo di file> che abbia la dimensione minima indicata con <dimensione minima del file in KB>.
Il parametro <Tipo di file> viene espresso con l'estensione del file (p.e. ''.avi'', ''.exe'', ''.tgz''); si pu� usare il carattere jolly ''*'' per indicare ogni tipo di file.
La <Dimensione minima file in KB>, come scritto, viene indicata in kilobytes.
Il <Limite in bytes/s> indica la velocit� massima alla quale verranno trasferiti i files interessati da questa direttiva.
Per esempio, con:
<pre>LargeFileLimit .avi 500 10240</pre>
diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovr� applicare uua velocit� massima di trasferimento di 10kb/s.


===='''MaxConnection'''====
====Configurazione di Cacti====
'''Sintassi''': <tt>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></tt><br/>
Per aggiungere un nuovo ''Device'', è necessario seguire i seguenti passi:
'''Default''': <tt>all 0</tt> (Illimitate da ogni origine).<br/>
* posizionarsi nella sezione '''console''';
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi � simile alla direttiva ''BandWidth''. Le connessioni eccedenti il limite riceveranno l'errore impostato in ''BandWidthError'' (di default � il 503).
* selezionare '''Devices''' dalla sezione '''Management''' nella barra di sinistra;
{{ Warningbox | Affinch� il limite di connessioni per una data origine possa essere applicato, � necessario che quella origine abbia anche una limitazione di banda specificata con ''BandWidth''.<br/>
* selezionare il bottone '''Add''' dalla barra in alto;
Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con
* completare il form inserendo i dati richiesti:
<pre>MaxConnection 192.168.2.0 20</pre>
:; Description : Il nome che si vuole dare al Device;
� fondamentale che il traffico con quella specifica rete sia indicato in
:; Hostname : l'indirizzo IP o il [[ FQDN ]] del Device;
<pre>BandWidth 192.168.2.0 0</pre>
:; Host Template : il tipo di dispositivo (in questo caso ''Linux Local Machine'');
Come si pu� vedere, � una semplice questione di forma: infatti si pu� tranquillamente indicare come limite ''0'', quindi infinito. L'importante � che sia specificato in BandWidth.}}
:; SNMP Options : le opzioni per la connessione al server snmpd del device; sono corretti (nella maggioranza dei casi) i valori di default;
* nella pagina che segue è possibile selezionare ''Create Graphs for this Host'', per accedere alla sezione dove indicare quali monitor attivare;
* da quel momento, inizierà il monitoraggio del device appena aggiunto.


==mod_bwshare==


=Conclusione=
Per aggiungere il device alla ''Visualizzazione ad Albero'', è necessario andare in Console->Graph Trees->Default Tree->Add e aggiungere il device, impostando '''Host''' come ''Tree Item Type''.


Con questi moduli � possibile, in breve tempo e con la massima semplicit�,
== Credits ==
ottimizzare la ripartizione della banda del proprio server web. Cosa
http://pandafunk.blogspot.com/2010/06/lsnmpd-di-debian-squeeze.html
fondamentale per non arrivare alla saturazione della banda, che
<br/>
comporterebbe lentezza nelle risposte dei vari servizi e della navigazione su
http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/snmp
internet.


{{Autori
|Autore = [[Utente:MaXeR|MaXeR]]
|Estesa_da =
:[[Utente:Ferdybassi|Ferdybassi]] 17:50, 4 mar 2011 (CET)
}}


----
[[Categoria:Monitoraggio]]
[[User:MaXeR|MaXeR]]
[[User:Soter|Soter]]
[[Categoria:Server]][[Categoria:Networking]]

Versione attuale delle 11:25, 26 set 2012

Edit-clear-history.png 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.


Debian-swirl.png Versioni Compatibili

Debian 5 "lenny"
Debian 6 "squeeze"
Debian 7 "wheezy"

Introduzione

Cacti è uno strumento completo per monitorare il sistema che si poggia su snmpd (lo stesso usato anche da mrtg). Uno dei punti di forza di Cacti è l'elevata facilità di configurazione, senza per questo non garantire una elevata flessibilità.

Installazione

Cacti è già disponibile nei repository Debian, e quindi installabile tramite apt-get. Per il suo funzionamento richiede un database mysql a cui appoggiarsi per memorizzare i dati e il server snmpd per accedere ai dati da elaborare, oltre a questi programmi, inoltre, è necessario installare (o avere già configurato) il webserver Apache con l'estensione PhP.

Nel seguito della guida verrà trattata una veloce installazione di Apache e di MySQL; per approfondimenti si consiglia di seguire una delle guide dettagliate presenti nel wiki:


Per una installazione veloce:

# apt-get install snmpd mysql-server snmp

nella sezione configurazione analizzeremo la configurazione di questi due server.

Ora installiamo Cacti (che installerà anche apache, php4, php4-mysql, php4-cli, e altre applicazioni necessarie al suo funzionamento):

# apt-get install cacti cacti-spine

Durante l'installazione di Cacti, verranno poste delle domande (che qui riporto con delle risposte di esempio):

  • MySQL server host name : localhost;
  • Database name for cacti : cacti;
  • Cacti database username: cacti;
  • Cacti user password: cactipass;
  • Webserver type: nel nostro caso selezioniamo Apache-SSL, ma è possibile effettuare la scelta più conveniente per il proprio sistema.
Info.png Nota Bene
durante la configurazione ci viene ricordato che la configurazione di mysql deve essere fatta manualmente, come vedremo in seguito


Configurazione

MySql

Se è la prima installazione di MySql sulla macchina, è consigliato cambiare la password di root in quanto, di default, non è impostata:

#/usr/bin/mysql
mysql> set password for root@localhost=password('rootpw');
mysql> exit

Una volta impostata, procediamo con la creazione del database e dell'utente che avrà accesso al database cacti;

mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipass';
mysql> flush privileges;
mysql> exit

Ora non ci resta che sistemare il database, creando le tabelle ed inserendo i dati necessari:

# zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u root -p cacti

Bene, la configurazione di MySql è terminata.

Snmpd

La configurazione di snmpd, se Cacti è installato sulla stessa macchina che si vuole monitorare, è limitata a dare l'accesso in lettura a snmpd, così da permetterne l'interrogazione da parte di Cacti.

Per fare questo, modifichiamo il file /etc/snmp/snmpd.conf con il nostro editor di testo preferito, e facciamo in modo che le righe:

com2sec paranoid   default         public
#com2sec readonly  default         public
#com2sec readwrite default         private

diventino:

#com2sec paranoid  default         public
com2sec  readonly  127.0.0.1       public
#com2sec readwrite default         private

Una volta salvato il tutto, riavviamo snmpd con un semplice:

# /etc/init.d/snmpd restart (oppure reload)

Ora bisogna modificare il file /etc/default/snmpd cambiando la riga:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

in:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

Per verificare il corretto funzionamento del demone può essere utile il seguente comando:

# snmpwalk -Os -c public -v 1 INDIRIZZO_IP_DA_TESTARE system

Si dovrebbe ottenere come risposta una lunga stringa di dati e non una scoraggiante riga come questa:

Timeout: No Response from INDIRIZZO_IP_DA_TESTARE 

A partire da Debian Squeeze Cacti non riesce a generare tutti grafici nonostante snmpd sia installato e configurato correttamente, perchè dalla versione 5.4.2.1 di net-snmp sono sorti dei conflitti di licenza contro i file MIB di IETF e IANA che fino a Debian Lenny erano contenuti nel pacchetto libsnmp-base. Ovviamente la rigorosa politica di Debian riguardo alle licenze free ne ha portato all'esclusione.
Niente panico: questi file su Debian esistono ancora, ma stanno nei repository non-free, nel pacchetto snmp-mibs-downloader (che praticamente è uno script che li scarica ed installa).
Prima di tutto bisogna quindi aggiungere il repository non-free al nostro sources.list, poi aggiornare la lista dei pacchetti e installare ciò che ci serve:

apt-get update
apt-get install snmp-mibs-downloader

Poi bisogna rettificare la configurazione di snmpd. Con Debian Squeeze la configurazione di snmpd utilizza per default un nuovo formato che comprende regole di ACL, ecc.
Per mettere il demone in ascolto su tutte le interfacce di rete:

#agentAddress  udp:127.0.0.1:161
agentAddress  udp:161

Per esporre tutte le informazioni disponibili alla community public:

#rocommunity public  default    -V systemonly
 rocommunity public  default

Per aggiungere grandezze da monitorare tramite script esterni:

extend mail_incoming    /usr/bin/sudo /usr/local/sbin/mail-io-stats incoming
extend mail_cmpleted    /usr/bin/sudo /usr/local/sbin/mail-io-stats completed

Infine si riavvia snmpd con:

/etc/init.d/snmpd restart

A questo punto snmpd sarà in grado, grazie ai preziosi file MIB appena installati, di fornire ai client tutte le informazioni che servono.

PHP

Cacti utilizza PHP sia come estensione di Apache, sia come cli (common line interpreter). Per evitare problemi, è necessario controllare che l'estensione per mysql sia abilitata nei seguenti file:

  • /etc/php4/cli/php.ini per quanto riguarda php4-cli;
  • /etc/php4/apache/php.ini per quanto riguarda php e apache.

La modifica di questi file consiste, in pratica, nella rimozione del ; di commento alla seguente riga:

;extension=mysql.so

Cacti

Per terminare la configurazione base del sistema, rechiamoci al seguente indirizzo:

http://localhost/cacti (se è stato scelto Apache/Apache2)
https://localhost/cacti (se è stato scelto Apache-SSL)

per completare l'installazione.

Premiamo Next>> dopo la prima schermata di presentazione;
Selezioniamo New Install e controlliamo che i dati riportati siamo corretti, altrimenti è possibile modificarli nel file /etc/cacti/debian.php, dopo di che andiamo avanti;
Nella pagina di riepilogo degli eseguibili, controlliamo che siano stati rilevati tutti, altrimenti è necessario installarli manualmente, come SNMP Utility Version selezioniamo la 2°: NET-Smtp .x;

Ora siamo davanti alla schermata di LogIn.
I dati per la prima autenticazione sono:
Username: admin
Password: admin

verremo obbligati a cambiare password: facciamolo!!!

Aggiunta di Monitor

Ora il sistema è pronto per essere configurato: dopo aver effettuato il login, infatti, potremo accedere a due aree distinte: Console e Graphs; la prima rappresenta il centro di controllo, da dove è possibile aggiungere nuovi monitor (New Graphs) od aggiungere nuovi computer, router o altro (Devices).

L'aggiunta è molto intuitiva, per quanto riguarda l'utilizzo dei monitor già presenti, e normalmente non necessita di modifiche se non riguardanti l'aspetto (colori, unità di misura).

Gestione Utenti

Cacti permette la gestione degli utenti, in modo da rendere possibile la visualizzazione delle statistiche ad utenti anonimi (opzione abilitata di default) tramite la pagina https://localhost/cacti/graph_view.php?action=tree, oltre alla definizione di utenti con facoltà ristrette (limitazioni a determinate aree e/o funzioni). Tutte le opzioni sono modificabili tramite la voce User Management presente nel menù di sinistra della sezione Console. Le opzioni disponibili sono autoesplicative, e di facile gestione. L'utente guest è quello utilizzato per l'accesso anonimo.

Personalizzazione

Cacti permette una vasta gamma di personalizzazioni, che vanno dall'aggiunta di macchine da monitorare, alla definizione di nuove sorgenti di dati, ottenibili tramite snmp o script ad hoc.

Vediamo nel dettaglio come implementare queste soluzioni.

Utilizzo Avanzato

Monitorare più macchine

Se siamo in una rete dove sono presenti più macchine, risulta utile e comodo avere sotto controllo il loro funzionamento. Cacti ci viene in contro anche in questo, permettendo di monitorare diverse macchine (definite Devices), il tutto in modo semplice e molto intuitivo.

Configurazione della macchina

Prenderemo in esame il caso in cui la macchina da monitorare sia un computer con Linux (per router, switch ed altri dispositivi simili, si rimanda al manuale specifico). Per permettere l'accesso al server snmpd, è sufficiente effettuare la modifica che è stata apportata precedentemente alla macchina su cui è stato installato Cacti.

Configurazione di Cacti

Per aggiungere un nuovo Device, è necessario seguire i seguenti passi:

  • posizionarsi nella sezione console;
  • selezionare Devices dalla sezione Management nella barra di sinistra;
  • selezionare il bottone Add dalla barra in alto;
  • completare il form inserendo i dati richiesti:
Description
Il nome che si vuole dare al Device;
Hostname
l'indirizzo IP o il FQDN del Device;
Host Template
il tipo di dispositivo (in questo caso Linux Local Machine);
SNMP Options
le opzioni per la connessione al server snmpd del device; sono corretti (nella maggioranza dei casi) i valori di default;
  • nella pagina che segue è possibile selezionare Create Graphs for this Host, per accedere alla sezione dove indicare quali monitor attivare;
  • da quel momento, inizierà il monitoraggio del device appena aggiunto.


Per aggiungere il device alla Visualizzazione ad Albero, è necessario andare in Console->Graph Trees->Default Tree->Add e aggiungere il device, impostando Host come Tree Item Type.

Credits

http://pandafunk.blogspot.com/2010/06/lsnmpd-di-debian-squeeze.html
http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/snmp




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Ferdybassi 17:50, 4 mar 2011 (CET)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized