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:

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:

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

FIXME 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. FIXME

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