11100
Comment:
|
9417
|
Deletions are marked like this. | Additions are marked like this. |
Line 9: | Line 9: |
Questa guida e` basata su Debian Wheezy | Questa guida e` basata su Debian 11 Bullseye |
Line 12: | Line 12: |
== Installazione di un server e di un nodo sullo stesso PC == | == Installazione di un server e di un nodo sullo stesso host == |
Line 14: | Line 14: |
Installiamo Munin (completo) con il comando {{{ aptitude install munin |
* Installiamo Munin (completo) con il comando {{{ aptinstall munin |
Line 18: | Line 18: |
che si porta dietro tutte le dipendenze. | * 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 }}} |
Line 21: | Line 30: |
== Configurazione del server per generare pagine web dinamiche == | == Configurazione di Munin per generare pagine web dinamiche == |
Line 25: | Line 36: |
Modificare {{{/etc/munin/munin.conf}}}. Visto che e` quasi tutto commentato (e a default) e` meglio per chiarezza rinominare il file originale tenendolo per riferimento e partire da zero con una configurazione "pulita" e minimale. | 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. |
Line 27: | Line 38: |
{{{ # (Exactly one) directory to include all files from. includedir /etc/munin/munin-conf.d |
* 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: {{{ |
Line 34: | Line 43: |
cgiurl_graph /munin-cgi/munin-cgi-graph | |
Line 40: | Line 48: |
}}} | |
Line 42: | Line 51: |
== 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 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: {{{ |
|
Line 44: | Line 85: |
[mater.kurgan.org] address 127.0.0.1 |
[test.kurgan.org] address 10.1.1.123 |
Line 60: | Line 101: |
Modificare {{{/etc/munin/apache.conf}}} per configurare apache2 in modo da poter eseguire gli script di Munin. Questa configurazione, che e` decisamente diversa da quella di default di Debian, e` adatta alla generazione dinamica dei grafici e delle pagine web. L'accesso e` limitato per IP del client in questa configurazione. In teoria non dovrebbero esserci pericoli ad esporre Munin al pubblico, pero` non si e` mai abbastanza paranoici. | == Configurazione di un host remoto che vogliamo monitorare == |
Line 62: | Line 103: |
{{{ Alias /munin-cgi/munin-cgi-html/static /var/cache/munin/www/static RedirectMatch ^/munin-cgi/$ /munin-cgi/munin-cgi-html/ |
* 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) |
Line 66: | Line 114: |
# Ensure we can run (fast)cgi scripts ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph <Location /munin-cgi/munin-cgi-graph> Order allow,deny Allow from localhost 127.0.0.0/8 ::1 10.1.0.0/16 Options +ExecCGI <IfModule mod_fcgid.c> SetHandler fcgid-script </IfModule> <IfModule mod_fastcgi.c> SetHandler fastcgi-script </IfModule> <IfModule !mod_fastcgi.c> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </IfModule> Allow from all </Location> ScriptAlias /munin-cgi/munin-cgi-html /usr/lib/munin/cgi/munin-cgi-html <Location /munin-cgi/munin-cgi-html> Order allow,deny Allow from localhost 127.0.0.0/8 ::1 10.1.0.0/16 Options +ExecCGI <IfModule mod_fcgid.c> SetHandler fcgid-script </IfModule> <IfModule mod_fastcgi.c> SetHandler fastcgi-script </IfModule> <IfModule !mod_fastcgi.c> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </IfModule> Allow from all </Location> <Location /munin-cgi/munin-cgi-html/static> # this needs to be at the end to override the above sethandler directives Order allow,deny Allow from localhost 127.0.0.0/8 ::1 10.1.0.0/16 Options -ExecCGI SetHandler None </Location> |
* 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 |
Line 113: | Line 121: |
Fatta questa configurazione, si puo` accedere alla pagine web di Munin all'indirizzo {{{http://hostname/munin-cgi/}}} |
* Riavviamo Munin sul server per fargli caricare il nuovo nodo, e aspettiamo 5 minuti perché lo interroghi e lo mostri nell'interfaccia web. |
Line 119: | Line 126: |
== Configurazione del server per la generazione di pagine statiche == | == Gestire i Plugin (su ogni host da monitorare) == |
Line 121: | Line 128: |
Fate riferimento alla sezione precedente per capire la differenza fra generazione statica e dinamica. Questa e` la configurazione statica. Modificare {{{/etc/munin/munin.conf}}}. Visto che e` quasi tutto commentato (e a default) e` meglio per chiarezza rinominare il file orignale tenendolo per riferimento e partire da zero con una configurazione "pulita" e minimale. {{{ # (Exactly one) directory to include all files from. includedir /etc/munin/munin-conf.d # 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 # I miei host. # Il primo e` localhost, di fatto, pero` e` indicato con il nome e non come localhost, per mia comodita`. [mater.kurgan.org] address 127.0.0.1 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 }}} Modificare {{{/etc/munin/apache.conf}}} per configurare apache2 per mostrare le pagine statiche generate da Munin ogni 5 minuti. L'accesso e` limitato per IP del client in questa configurazione. In teoria non dovrebbero esserci pericoli ad esporre Munin al pubblico, soprattutto visto che queste sono pagine statiche e non CGI, pero` non si e` mai abbastanza paranoici. {{{ # Enable this for template generation # Alias /munin /var/cache/munin/www <Directory /var/cache/munin/www> Order allow,deny Allow from localhost 127.0.0.0/8 ::1 10.1.0.0/16 Options None <IfModule mod_expires.c> ExpiresActive On ExpiresDefault M310 </IfModule> </Directory> }}} Fatta questa configurazione, si puo` accedere alla pagine web di Munin all'indirizzo {{{http://hostname/munin/}}} == Configurazione di un nodo == Il file di configurazione di default {{{/etc/munin/munin-node.conf}}} va bene senza modifiche per il nodo che sia installato sulla stessa macchina dove e` installato il server. == Configurazione di un nodo remoto == Se il server non e` locale al nodo, occorre configurare il nodo in modo da accettare le connessioni dal server, modificando il file {{{/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. Ricordiamo che le connessioni avvengono nel verso DAL server AL nodo. Sul server chiaramente occorrera` indicare una sezione di configurazione per il nodo che abbiamo appena creato, come indicato prima nella sezione dedicata alla configurazione del server. == Plugin per il nodo == Ogni nodo 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. |
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. |
Line 194: | Line 134: |
{{{ | {{{ |
Line 199: | Line 139: |
{{{ | {{{ |
Line 219: | Line 159: |
{{{ | {{{ |
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 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.