Munin
Munin e` un sistema di monitoraggio "a lungo termine". Non e` realtime, legge i suoi valori ogni 5 minuti, e quindi non e` detto che sia adatto a ogni necessita`. La sua forza e` che permette, sul lungo termine (ore o giorni) di visualizzare l'andamento di moltissimi parametri delle macchine monitorate, permettendo cosi` di vedere se ci sono dei pattern riconoscibili.
Munin e` composto di un "server", ovvero il computer che raccoglie e visualizza i dati (su una pagina web), e di uno o piu` "nodi", ovvero i computer che vengono monitorati. Per monitorare un singolo computer e` possibile (e necessario) installare il server e il nodo sullo stesso computer.
Come purtroppo capita fin troppo spesso, la documentazione di Munin non e` proprio il massimo.
Questa guida e` basata su Debian 11 Bullseye
Installazione di un server e di un nodo sullo stesso host
- Installiamo Munin (completo) con il comando
aptinstall munin
- Oppure, per l'ultima versione, usiamo i backports:
apt -t bullseye-backports install munin
- Installiamo apache2 con i moduli necessari a Munin:
apt install apache2 libcgi-fast-perl libapache2-mod-fcgid
Configurazione di Munin per generare pagine web dinamiche
La configurazione che vi mostro qui e` fatta per generare dinamicamente i grafici e le pagine web. Qui ci sta una piccola spiegazione: Munin puo` generare delle pagine web (e relativi grafici) ogni 5 minuti a mezzo di uno script in cron, oppure puo` limitarsi a raccogliere i dati ogni 5 minuti, e generare le pagine web e i grafici dinamicamente quando si accede alle pagine web stesse per visualizzarle. E` logico che nel primo caso la visualizzazione delle pagine web sara` istantanea, a scapito pero` di dover consumare tempo macchina per rigenerare i grafici ogni 5 minuti anche se nessuno li visualizzera` per giorni o mesi. Nel secondo caso invece la visualizzazione delle pagine richiedera` risorse, pero` ridurremo il carico nel processo di raccolta dei dati che gira ogni 5 minuti. Quale delle due soluzioni sia la migliore non lo so, sinceramente.
La configurazione base di Munin (/etc/munin/munin.conf) è quasi tutta commentata. La lasciamo stare così com'è e creiamo delle config dentro a /etc/munin/munin.conf.d per fare le nostre modifiche.
Creare un file dentro /etc/munin/munin.conf.d con un nome che vogliamo noi, tipo, che so, "munin-local.conf" e ci mettiamo dentro le nostre configurazioni:
# attivo la parte CGI per generare i grafici solo quando si visita la pagina web html_strategy cgi graph_strategy cgi # contatti email, ovvero "a chi mando le mail se ci sono problemi" contacts kurgan contact.kurgan.command mail -s "Munin notification ${var:host}" il_mio_indirizzo@dominio.it contact.kurgan.always_send critical
Configurazione di Apache
Apache può servire le pagine di Munin in modo dinamico o statico. La configurazione cambia di poco, e le modifiche vanno fatte dentro al file /etc/munin/apache24.conf.
In questo file occorre modificare un paio di cose: prima di tutto da quali host possiamo accedere (di default solo localhost) e poi se vogliamo usare la generazione in cron oppure dinamica delle pagine. Quest'ultima config andrà ovviamente di pari passo con quello che abbiamo scelto in munin.conf e in munin.conf.d prima.
Per abilitare l'accesso per esempio dalla rete 10.1.1.0/24 dovremo sostituire le due occorrenze di Require local con
Require ip 10.1.1.0/24
- Per abilitare l'accesso da ovunque, ma con una password, dopo aver creato il file munin-htpasswd usando "htpasswd -c" ed avere commentato la riga "Require", possiamo usare:
AuthUserFile /etc/munin/munin-htpasswd AuthName "Munin" AuthType Basic Require valid-user
Per passare dalla modalità cron a quella CGI dinamica andiamo in fondo e scambiamo i commenti sulle righe #Alias /munin /var/cache/munin/www e ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html (commentiamo la prima e scommentiamo la seconda)
Diciamo ad Apache di leggere la config di Munin, facendo un link come segue: ln -s /etc/munin/apache24.conf /etc/apache2/sites-enabled/munin.conf
- Facciamo poi un restart di Munin e di Apache
Fatta questa configurazione, si puo` accedere alla pagine web di Munin all'indirizzo http://hostname/munin/
Vale la pena di notare che non supportiamo https in questa configurazione molto di base, e che se avete Apache con altre config piu` o meno complesse può essere che dobbiate modificare le cose per incastrare tutto assieme.
Aggiungere un host al server Munin
Per default il server dove abbiamo appena installa Munin provvede a monitorare sè stesso, usando la config che si trova in /etc/munin/munin.conf, in particolare il pezzo che dice:
[localhost.localdomain] address 127.0.0.1 use_node_name yes
Ovviamente noi possiamo (e dobbiamo?) creare nuovi host nella config, dopo aver installato il "munin-node" sui medesimi. La cosa sensata è creare le config dentro a /etc/munin/munin.conf.d, una per host. (o anche una per gruppo di host, dipende quanti ne abbiamo)
Questo è un esempio di config per due host:
# I miei host. # Il primo e` localhost, di fatto, pero` e` indicato con il nome e non come localhost, per mia comodita`. [test.kurgan.org] address 10.1.1.123 df._dev_md2.warning 97 df._dev_md2.critical 99 exim_mailstats.graph_period minute # apcupsd_ww.timeleft.warning 0:30 # apcupsd_ww.timeleft.critical 0:30 # Questo, che e` commentato, e` un altro host (remoto) che posso aggiungere al mio server in modo che venga # monitorato anche esso. #[calimero.kurgan.org] # address calimero.kurgan.org # exim_mailstats.graph_period minute
Configurazione di un host remoto che vogliamo monitorare
Installiamo sul nostro host da monitorare il pacchetto munin-node
apt -t bullseye-backports install munin-node
Configuriamo il nodo per accettare le connessioni dal nostro server, modificando /etc/munin/munin-node.conf e indicando l' indirizzo ip del server alla voce "allow" oppure "cidr_allow", come e` spiegato nei commenti del file stesso. Ovviamente occorre ricordarsi di aprire la porta 4949/tcp sul firewall del nodo.
allow ^5\.2\.3\.1$
- Riavviamo il servizio munin-node
- Apriamo sul firewall la porta 4949 in ingresso dal server Munin (ricordiamo che il server chiama il nodo, non viceversa)
Ora sul server creiamo una configurazione per il nostro nuovo host da monitorare. Per esempio possiamo creare il file /etc/munin/munin-conf.d/host-kurgan.org-mail.conf e metterci dentro la nostra config:
[mail.kurgan.org] address X.X.X.X use_node_name yes exim_mailstats.graph_period minute
- Riavviamo Munin sul server per fargli caricare il nuovo nodo, e aspettiamo 5 minuti perché lo interroghi e lo mostri nell'interfaccia web.
Gestire i Plugin (su ogni host da monitorare)
Ogni host da monitorare, ovvero quelli dove abbiamo installato munin-node, usa dei plugin per raccogliere i dati dal sistema su cui e` installato. Questi plugin vanno abilitati o disabilitati linkandoli dentro a /etc/munin/plugins e possono essere configurati in diversi modi. Per vedere quali plugin possiamo abilitare su ogni nodo, possiamo affidarci a un automatismo molto comodo. Purtroppo questo non funziona con tutti i plugin. Ce ne sono molti che vanno abilitati a mano, perche` non sono in grado di essere selezionati automaticamente.
Attivare e disattivare i plugin
Per verificare quali plugin possiamo abilitare (e quali sono abilitati o meno) in modo automatico possiamo usare il comando
munin-node-configure --suggest
Se vogliamo automatizzare la creazione dei link per l'abilitazione dei plugins che ci sono appena stati suggeriti dal comando precedente, possiamo usa il comando
munin-node-configure --suggest --shell
il quale mostra in output una serie di comandi di shell (che sono poi una serie di "ln -s") che possiamo eseguire in sequenza per attivare i plugin suggeriti.
Se vogliamo disabilitare alcuni plugin, possiamo farlo semplicemente cancellando i link relativi da dentro a /etc/munin/plugins e riavviando munin-node. Ha senso farlo per i plugin che malfunzionano o per quelli non necessari, per evitare di sovraccaricare munin inutilmente. Per esempio il plugin "smart" che legge i dati SMART dai dischi non funziona per i dischi SCSI o SAS, per cui non ha senso tenerlo abilitato su questo tipo di dischi.
Se vogliamo abilitare a mano alcuni plugin, possiamo farlo creando un link al plugin dentro a /etc/munin/plugins e riavviando munin-node. E` possibile (molto probabile) che i plugin che abilitiamo a mano debbano essere configurati.
Configurare i plugin
Uno dei sistemi piu` sensati per configurarli e` creando dei files con nomi arbitrari (ma se li creiamo con un nome simile o uguale a quello del plugin che vogliamo configurare e` meglio) dentro alla directory /etc/munin/plugin-conf.d. In questa directory c'e` gia` un file installato che contiene la configurazione di diversi plugin "standard".
Testare i plugin
Dopo aver abilitato un plugin posso testarlo per vedere se da` un output o se da` errori. Per testarlo eseguo:
munin-run <nome del plugin>
Nel funzionamento normale i plugin devono dare un output testuale che mostra i dati raccolti, e ovviamente non devono dare errori.
Plugin per Apcupsd
Il plugin per apcupsd esiste ma non viene riconosciuto di default. Per attivarlo è sufficiente eseguire:
ln -s /usr/share/munin/plugins/apc_nis /etc/munin/plugins/apc_nis
E poi riavviare munin-node