====== 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 =====
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 [[http://www.linuxquestions.org/questions/linux-software-2/iperf-cpu-usage-at-100-a-747813/|post]] e [[http://osdir.com/ml/network.iperf.user/2008-05/msg00001.html|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_.txt|iperf_}}**. Lo script è derivato da quello presente sul sito [[http://munin-monitoring.org/browser/munin-contrib/plugins/network/iperf_|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 [[http://munin-monitoring.org/wiki/plugin-conf.d|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_.txt|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