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
aptinstall munin
apt -t bullseye-backports install munin
apt install apache2 libcgi-fast-perl libapache2-mod-fcgid
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.
/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
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.
Require local
con Require ip 10.1.1.0/24
AuthUserFile /etc/munin/munin-htpasswd AuthName "Munin" AuthType Basic Require valid-user
ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html
(commentiamo la prima e scommentiamo la seconda)ln -s /etc/munin/apache24.conf /etc/apache2/sites-enabled/munin.conf
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.
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
munin-node
apt -t bullseye-backports install munin-node
/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$
/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
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.
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.
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".
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.
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