Munin è un ottimo software per il monitoraggio, permette infatti tramite dei grafici di tenere sotto controllo tutti gli aspetti del sistema.
Il software è composto da due parti: il server (munin) e il client (munin-node)
La macchina che ospiterà il server avrà la capacità di monitorare non solo se stessa ma anche tutti i client su cui verrà installato il client munin-node
Possiamo installare munin e munin node su Debian direttamente dai repositori con il comando:
0 |
apt-get install munin munin-java-plugins munin-libvirt-plugins munin-plugins-extra apache2 |
Se si tratta di una macchina che deve un client non è necessario installare munin
0 |
apt-get install munin-node munin-java-plugins munin-libvirt-plugins munin-plugins-extra |
Adesso passiamo alla configurazione del server e dei vari client
SERVER
La configurazione del server si trova in: /etc/munin/munin.conf
Di default la generazione dei grafici è in /var/www/munin e in questo file potete cambiarla in base alle vostre esigenze.
Sempre nello stesso file ci sono le configurazioni dei vari client, la sintassi è la seguente [nomenodo] address <IPnodo> use_node_name <yes|no>
In nomenodo va specificato il nome del nodo, in IPnodo va inserito l’ip del client e nella clausola use_node_name va specificato se il nodo deve essere abilitato o meno
I dati vengono generati da un cron ogni 5 minuti
CLIENT
La configurazione dei Client (o nodi) è estremamente semplice ed automatizzata: è presente un comando che controlla la macchina alla ricerca di servizi monitorabili attraverso delle regole predefinite. È d’obbligo evidenziare il numero di monitor presenti, che spaziano dalla statistiche di sistema base (CPU, Memoria, Swap) fino a quelle dei servizi (MySql, Postfix, NFS, Apache, ecc).
E’ necessario lanciare il comando di autoconfigurazione munin-node-configure ed editare il file vi /etc/munin/munin-node.conf nel quale dovremmo inserire l’indirizzo ip del server.
Il processo può impiegare un bel po’ di tempo (soprattutto se la macchina è lenta); per controllare l’avanzamento del processo, consiglio di abilitare il debug:
0 |
munin-node-configure --debug |
al termine della procedura di riconoscimento verrà mostrata una tabella riassuntiva, simile alla seguente:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
Plugin | Used | Extra information ------ | ---- | ----------------- acpi | no | apache_accesses | no | apache_processes | no | apache_volume | no | apt | no | apt_all | no | courier_mta_mailqueue | no | courier_mta_mailstats | no | courier_mta_mailvolume | no | cps_ | no | cpu | yes | cupsys_pages | yes | df | yes | df_abs | no | df_inode | yes | entropy | yes | exim_mailqueue | no | exim_mailstats | no | forks | yes | fw_conntrack | no | fw_forwarded_local | no | fw_packets | no | hddtemp_smartctl | yes | if_ | yes | eth0 if_err_ | yes | eth0 interrupts | yes | iostat | yes | ip_ | no | ircu | no | irqstats | yes | load | yes | loggrep | no | memory | yes | multips | no | munin_graph | no | munin_update | no | mysql_bytes | yes | mysql_isam_space_ | no | mysql_queries | yes | mysql_slowqueries | yes | mysql_threads | yes | netstat | yes | nfs_client | yes | nfsd | yes | ntp_ | yes | ntp_states | no | open_files | yes | open_inodes | yes | ping_ | no | port_ | no | postfix_mailqueue | yes | postfix_mailstats | no | postfix_mailvolume | no | processes | yes | ps_ | no | psu_ | no | sendmail_mailqueue | no | sendmail_mailstats | no | sendmail_mailtraffic | no | sensors_ | no | smart_ | yes | hda squid_cache | no | squid_icp | no | squid_requests | no | squid_traffic | no | swap | yes | sybase_space | no | uptime | no | vlan_ | no | vlan_inetuse_ | no | vlan_linkuse_ | no | vmstat | yes | |
Per le macchine diverse da quella che ospita il server, bisogna modificare le impostazioni di accesso per consentire le connessioni da parte di quest’ultimo. Per fare questo apriamo con un editor il file /etc/munin/munin-node.conf, ed aggiungiamo la seguente riga alla fine del file:
allow ^192\.168\.0\.1$ (specificare l’IP del client che si vuol monitorare)
Il commento poco sopra il punto in cui abbiamo inserito questa stringa ci ricorda che si tratta di espressioni regolari, di conseguenza è necessario anteporre un backslash prima dei punti.
Per applicare le modifica apportate, riavviamo munin-node:
0 |
/etc/init.d/munin-node restart |
MODULI
Munin sfrutta un’architettura a plug-in per monitorare le varie componenti di sistema. Come abbiamo visto precedentemente (vedi l’output di munin-node-configure) ce ne sono a disposizione moltissimi.
Munin-node altro non è che uno script che si preoccupa di lanciare i vari plug-in presenti all’interno della cartella /etc/munin/plugins.
Notiamo subito che all’interno di questa directory non troviamo i veri e propri moduli, ma del link simbolici ad essi:
0 |
ls -l /etc/munin/plugins |more |
totale 0
lrwxrwxrwx 1 root root 28 2005-07-01 01:06 cpu -> /usr/share/munin/plugins/cpu
lrwxrwxrwx 1 root root 27 2005-07-01 01:06 df -> /usr/share/munin/plugins/df
lrwxrwxrwx 1 root root 33 2005-07-01 01:06 df_inode -> /usr/share/munin/plugins/df_inode
lrwxrwxrwx 1 root root 32 2005-07-01 01:06 entropy -> /usr/share/munin/plugins/entropy
[…]
Quindi, per abilitare e/o disabilitare i moduli, è sufficiente creare/cancellare i link simbolici a /usr/share/munin/plugins presenti in /etc/munin/plugins.
Se ad esempio si vuole abilitare i moduli relativi ad apt, sarà sufficiente lanciare il comando:
0 |
ln -s /usr/share/munin/plugins/apt* /etc/munin/plugins |
e, dopo aver creato i link:
0 |
/etc/init.d/munin-node restart |
Nel caso si voglia testare l’effettivo funzionamento di un plugin, si può sfruttare il comando munin-run che lancia lo script coi permessi effettivi con cui verrà richiamato da munin. Per esempio, si può testare il corretto funzionamento del plugin postfix_mailstats con:
0 |
munin-run postfix_mailstats |
Il comando, in questo caso, potrebbe dare errore (o restituire un valore pari a U) per via dei permessi insufficienti: è necessario essere root per poter accedere allo spool di posta e ‘contare’ i messaggi presenti. Per ovviare a questo problema è sufficiente modificare il file /etc/munin/plugin-conf.d/plugins.conf aggiungendo la seguente riga:
[postfix_mailstats]
user root
che indica, a munin, di eseguire lo script coi privilegi di root.
APACHE
Parliamo un po’ più dettagliatamente dei moduli relativi ad Apache: per abilitarli, infatti, non è sufficiente creare i link simbolici, ma abbiamo bisogno anche di metter mano alla configurazione di Apache.
Per monitorare Apache, Munin ha bisogno che mod_status venga caricato da httpd con la direttiva ExtendedStatus On. In Debian mod_status per Apache viene caricato di default, per cui dobbiamo solo preoccuparci di fare un piccolo aggiustamento alla sezione che lo riguarda.
Ecco come dobbiamo impostare in httpd.conf la sezione di mod_status:
0 1 2 3 4 5 |
<IfModule mod_status.c> ExtendedStatus On <Location /server-status> SetHandler server-status </Location> </IfModule> |
In questo modo munin può interrogare Apache direttamente tramite il protocollo HTTP.
Per verificare che mod_status sia effettivamente in funzione è sufficiente puntare il nostro browser all’indirizzo http://localhost/server-status.
Riavviamo Apache:
0 |
apachectl graceful |
e munin-node:
0 |
/etc/init-d/munin-node restart |
AUTENTICAZIONE
L’unico problema di Munin è che le nostre statistiche sono visibili a tutti. Occorre quindi prendere qualche precauzione.
Abilitiamo innanzitutto il modulo auth_digest di Apache, per gestire le Digest Authentication, un metodo più sicuro che evita di trasmettere in chiaro la password:
0 |
a2enmod auth_digest |
Quindi ricarichiamo la configurazione di Apache:
# /etc/init.d/apache2 force-reload
Ora che Apache può gestire un’autenticazione sicura dobbiamo impostare un utente e una password per Munin:
0 |
htdigest -c /var/cache/munin/www/.htpasswd munin munin |
Ci verrà richiesta una password per l’utente “munin” appena creato; digitiamola due volte per conferma.
A questo punto non ci resta che modificare il file che definisce il Virtual Host di Apache per Munin, abilitando l’autenticazione digest:
0 |
nano /etc/munin/apache.conf |
e aggiungendo le righe seguenti tra i TAG <Directory />….</Directory>:
<Directory />
…
#Autenticazione
AuthType Digest
AuthName “munin”
AuthUserFile /var/www/munin/.htpasswd
require valid-user
</Directory>
Infine controlliamo l’attuale configurazione di Apache e riavviamolo:
<pre>
# apache2ctl -t
Syntax OK
# /etc/init.d/apache2 force-reload
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 Comments