munin: come ti controllo il server aziendale

Munin logoIn questi ultimi tempi il server che mantiene il nostro portale è sottoposto ad un carico sempre maggiore grazie al fatto che diventiamo sempre più grandi! ;)

Ecco allora che dobbiamo iniziare a tenerlo sotto controllo per capire dove possiamo ottimizzare le risorse in modo da non dover abusare di quello che il nostro sponsor ci dà. Per fare questo lavoro ho scelto di usare munin.

Munin è un tool che monitorizza costantemente l’uso delle risorse di sistema e permettere quindi all’amministratore di capire qual è lo stato del server e cosa può essere successo in passato durante, ad esempio, un calo delle performance della macchina. Munin infatti mantiene uno storico dei parametri monitorati.

In questo articolo vedremo un esempio di procedura di installazione e come lo si configura.

Il nostro server è bastato su Debian e quindi utilizzerò i comandi per questa distribuzione, ma molti di questi si possono usare tranquillamente anche su altre distro.

Per installare munin su Debian basta dare il solito:

# aptitude install munin

Una volta finito il tool va configurato. Su Debian i file di configurazione sono nella directory /etc/munin.

Il primo file da modificare è munin.conf, le modifiche notevoli che ho apportato per il nostro server riguardano semplicemente la notifica all’amministratore di sistema e la definizione di un semplice host:

contact.someuser.command mail -s “Munin notification” root@consulenti-ict.it

[consulenti-ict.it]
    address 127.0.0.1
    use_node_name yes

Quindi nel file munin-node.conf ho ristretto gli accessi per il nodo (il server stesso) al solo indirizzo di loopback:

allow ^127.0.0.1$
host 127.0.0.1

A questo punto faccio ripartire il demone e passo alle verifiche:

ict:/etc/munin# /etc/init.d/munin-node restart
Stopping Munin-Node: done.
Starting Munin-Node: done.

Verifico che il demone veda correttamente il nome del server da monitorare:

ict:~# telnet localhost 4949
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
# munin node at ict

ict:~# telnet ict 4949
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
# munin node at ict

Perfetto! Risponde alla stessa maniera. Poi verifico se munin vede tutti i nodi che ho definito (quindi uno solo nel nostro caso) con il comando nodes:

ict:~# telnet ict 4949
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
# munin node at ict
nodes
ict
.

Ok, è tutto a posto! Ora passo alla definizione dei plugin.

Un plugin è un programma che monitorizza un particolare sottosistema della macchina, più plugin aggiungo a munin e più sottosistemi del server sono monitorizzati. Esiste un tool che ci fa una panoramica dei plugin disponibili e che sono già pronti all’uso o che vanno configurati affinché funzionino, il tool si chiama munin-node-configure:

ict:~# munin-node-configure –suggest
Plugin                     | Used | Suggestions
——                     | —- | ———–
acpi                       | no   | [ACPI program not found]
cupsys_pages               | no   | [could not find logdir]
hddtemp_smartctl           | no   | [smartctl not found]
if_                        | yes  | – +eth0
if_err_                    | yes  | – +eth0
ip_                        | yes  | –
mysql_isam_space_          | yes  | no –
nfs_client                 | no   | [no /proc/net/rpc/nfs]
nfsd                       | no   | [no /proc/net/rpc/nfsd]
postfix_mailqueue          | no   | [spooldir not found]
postfix_mailvolume         | no   | [postfix not found]
postgres_block_read_       | no   |
postgres_commits_          | no   |
postgres_locks             | no   |
postgres_queries_          | no   |
postgres_space_            | no   |
ps_                        | yes  | –
smart_                     | yes  | no –
squid_cache                | no   | [could not connect: Connection refused]
squid_requests             | no   | [could not connect: Connection refused]
squid_traffic              | no   | [could not connect: Connection refused]
tomcat_access              | no   | [XML::Simple not found]
tomcat_jvm                 | no   | [XML::Simple not found]
tomcat_threads             | no   | [XML::Simple not found]
tomcat_volume              | no   | [XML::Simple not found]

I puntini () alla fine indicano che la lista è molto più lunga ed è stata tagliata solo per esigenze di leggibilità. Questa tabellina ci dice quali tool sono già funzionanti (marcati con Used) e quali no; e, per questi ultimi, ci dice cosa possibilmente non va e/o come potervi porre rimedio.

Una nota: questo tool non mostra tutti i plugin installabili poiché alcuni di questi non rispondono a  particolari specifiche di funzionamento. Rimando il lettore curioso alle pagine di documentazione del tool.

Per installare un plugin basta fare un link simbolico nella directory /etc/munin/plugins del tipo:

ict:/etc/munin/plugins# ln -s /usr/share/munin/plugins/if_ if_eth0

In questo modo si monitora l’interfaccia eth0. Oppure:

ict:/etc/munin/plugins# ln -s /usr/share/munin/plugins/apache_accesses .

Così si tengono sott’occhio gli accessi di apache. La differenza tra il primo e il secondo comando è che il primo plugin vale per tutte le periferiche di rete e si configura semplicemente dandogli il nome giusto; infatti per monitorare anche la eth1 dovrei fare:

ict:/etc/munin/plugins# ln -s /usr/share/munin/plugins/if_ if_eth1

Bello, no? :)

Per testare se un plugin va basta lanciarlo con l’opzione autoconf:

ict:/etc/munin/plugins# ./apache_accesses autoconf

se la risposta non è yes allora qualcosa non va!

I risultati di munin sono poi visibili via browser (quindi dovrete installare pure quello in maniera acconcia) e la loro lettura è resa comoda dal fatto che tutti i dati sono in forma di grafici come mostrato in questo esempio.

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi