Table of Contents
Munin
Installare il pacchetto Debian munin che fornisce le funzioni di nodo Munin master, altri host possono essere semplicemente satelliti (installando il pacchetto munin-node) dell'unico master.
L'installazione predefinita Debian imposta una alias /munin
nel web server Apache, ma l'accesso è ristretto a 127.0.0.1. Modificare /etc/munin/apache.conf
e allargare i permessi per la directory /var/cache/munin/www
e le location /munin-cgi/*
.
Per la visualizzazione dei grafici è necessario installare il pacchetto libcgi-fast-perl, che non risulta come dipendenza di munin nel pacchetto Debian 12 Bookworm (è solo raccomandato).
Plugin
Creare dei link in /etc/munin/plugins/
ai plugin richiesti che risiedono in /usr/share/munin/plugins/
. A seconda dei plugin attivi potrebbero essere necessari altri pacchetti, ad esempio:
- libdbi-perl e libdbd-pg-perl per il plugin
postgres_streaming_
Permessi
I vari plugin vengono eseguiti solitamente con utenti non privilegiati, questo potrebbe causare dei problemi. Ad esempio il plugin mailman non riesce a leggere i file di log (vedere /var/log/munin/munin-node.log
):
Can't open /var/log/mailman/post for reading: Permission denied at /etc/munin/plugins/mailman line 109.
L'utente nobody.munin
infatti non può accedere alla directory:
drwxrws--- 2 root list 4096 Jan 4 06:25 /var/log/mailman
Per modificare i permessi è sufficiente creare un file in /etc/munin/plugin-conf.d/local
con:
[mailman] group list
Appunti su monitoraggio traffico rete
Il grafico network traffic mostra il traffico:
- upload traffico trasmesso, positivo (generato dall'interfaccia)
- download traffico ricevuto, negativo
Il plugin che effettua la misurazione non utilizza snmpd, ma va direttamente a leggere i valori da /sys/class/net/{interface}/statistics/{tx|rx}_bytes
I dati rrd (byte rx/tx) sono memorizzati nel file /var/lib/munin/localdomain/localhost.localdomain-if_{interface}-{up|down}-d.rrd
.
Aggiungere un'interfaccia di rete
Per aggiungere il monitoraggio di una scheda di rete (es. eth2):
cd /etc/munin/plugins ln -s /usr/share/munin/plugins/if_ if_eth2
C'è uno script che suggerisce quali sono le schede di rete disponibili:
export MUNIN_LIBDIR=/usr/share/munin /usr/share/munin/plugins/if_ suggest tun3 eth2 tun2 eth1 tun1 eth0
Dopo il cambiamento riavviare il servizio munin-node.
Monitoraggio latenza
Il pacchetto munin-plugins-core fornisce il plugin /usr/share/munin/plugins/ping_
, per attivarlo con le opzioni predefinite e misurare la latenza verso un host remoto è sufficiente creare un link simbolico:
ln -s /usr/share/munin/plugins/ping_ /etc/munin/plugins/ping_remote.server.org
Il plugin è scritto in Bash ed utilizza l'espansione dei parametri con valore predefinito per modificare il proprio comportamento. Ad esempio ping_args contiene gli argomenti passati al comando ping
ed ha valore predefinito -c 2
. Per passare valori diversi è possibile creare un file di configurazione /etc/munin/plugin-conf.d/ping_
che contiene ad esempio:
[ping_*] env.ping_args -c 5 [ping_remote.server.org] env.ping_args -c 10
L'utilizzo del carattere jolly consente di impostare dei parametri validi per tutti i plugin che non hanno una configurazione specifica.
Monitoraggio banda con iperf
ATTENZIONE: Attualmente (Debian Wheezy 7.3) questa soluzione non è usabile! Pare che ci sia un bug con iperf 2.0.5 in modalità daemon: dopo qualche tempo l'utlizzo della CPU sale al 100%, anche se non ci sono client connessi. Il problema è stato riscontrato in modalità TCP. Vedere ad esempio questo post e quest'altro.
Con iperf è possibile monitorare la larghezza di banda TCP o UDP, con Munin è possibile trasformare queste misure in grafico.
iperf funziona in modalità client/server, normalmente sulla porta 5001/TCP. Lato server, dopo aver installato l'omonimo pacchetto Debian, è necessario far partire il demone. Lo script start/stop non è fornito, ma utilizzando il generico /etc/init.d/skeleton
lo si crea facilmente.
Per testare il funzionamento, sul client si può eseguire:
iperf -c test.server.org ------------------------------------------------------------ Client connecting to test.server.org, TCP port 5001 TCP window size: 20.4 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.10 port 39376 connected with 192.168.33.46 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-12.2 sec 1.25 MBytes 860 Kbits/sec
Per agganciare un grafico Munin sul test iperf
si crea un plugin apposito, di nome iperf_. Lo script è derivato da quello presente sul sito munin-monitoring.org, ma è stato reso parametrico sulla durata e sulla scalatura del grafico.
Non essendo pacchettizzato Debian lo possiamo salvare in /usr/local/share/munin/plugins/iperf_
. Per attivarlo è sufficiente creare questo link simbolico:
ln -s /usr/local/share/munin/plugins/iperf_ /etc/munin/plugins/iperf_test.server.org
ATTENZIONE L'esecuzione del plugin deve avere una durata limitata, altrimenti viene ucciso da Munin e l'output non viene ricevuto nè il grafico generato. Il limite di esecuzione predefinito è 10 secondi, nella configurazione in plugin-conf.d è possibile specificare un valore timeout
diverso.
Per configurare il plugin impostando il tempo di esecuzione e la scalatura del grafico si crea /etc/munin/plugin-conf.d/iperf_
con:
[iperf_test.server.org] env.iperf_time 10 env.upper_limit 1500000 timeout 30
Monitoraggio banda con nuttcp
Considerato il problema di iperf
(vedi paragrafo sopra), si è provato con nuttcp. Anche questo funziona in tecnologia client/server, con impostazione predefinita sulla porta 5000 e 5001 TCP.
Sul server si installa l'omonimo pacchetto Debian e si crea uno script start/stop opportuno.
Sul client si configura un plugin per Munin nuttcp_ con link simbolico come visto sopra. Quindi si crea un file di configurazione /etc/munin/plugin-conf.d/nuttcp_
:
[nuttcp_test.server.org] env.nuttcp_time 15 env.upper_limit 1500000 timeout 30
Monitoraggio servizio Apache
Munin fornisce tre plugin per monitorare un processo web server Apache: apache_accesses, apache_processes e apache_volume. Questi sono inclusi nel pacchetto Debian munin-plugins-core. Tuttavia Debian (almeno nella versione 11.8 Bullseye) non installa automaticamente la dipendenza dalla libreria Perl LWP::UserAgent fornita dal pacchetto libwww-perl, che va quindi installato manualmente.
Una volta installato il tutto è sufficiente creare i link simbolici:
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
Per verificare se Apache è configurato correttamente per dare accesso alle statistiche, provare ad accedere all'URL specifico, ad esempio con wget:
wget -O status.txt "http://localhost/server-status?auto"
Per verificare che il plugin funzioni, è sufficiente eseguirlo da riga di comando:
/usr/share/munin/plugins/apache_accesses accesses80.value 21617