Differences between revisions 2 and 3
Revision 2 as of 2013-08-26 17:38:29
Size: 11100
Editor: Kurgan
Comment:
Revision 3 as of 2022-07-11 15:15:56
Size: 9417
Editor: Kurgan
Comment:
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.

LinuxDebian/Munin (last edited 2022-07-12 11:03:23 by Kurgan)