Centreon: monitorare l’utilizzo di memoria

La memoria RAM è da sempre uno dei beni più preziosi (e costosi) delle infrastrutture informatiche.

Avere una chiara idea di quanta ram venga impiegata dai vostri sistemi può essere un ottimo modo per evitare sprechi di hardware (sia esso virtuale o meno) e diagnosticare per tempo eventuali memory leak che potrebbero affliggere il vostro applicativo.

In questo articolo vedremo come impiegare Centreon per avere non solo un quadro preciso dell’utilizzo di memoria , ma anche disporre dello storico del monitoraggio sotto forma di grafico che ci permetta di identificare il trend di utilizzo ed eventuali picchi.

Monitoraggio a livello di infrastruttura

Il primo dato che vogliamo ottenere è l’utilizzo della ram a livello macchina, ovvero quanta ram sia complessivamente allocata dall’intero sistema rispetto a quella impostata come massima disponibile.

Questo dato si rivela estremamente utile per capire quali macchine all’interno della server farm possano necessitare di un upgrade per funzionare a livello ottimale, ma anche per identificare eventuali macchine sovradimensionate ( magari a causa di un errore di stima o per cali di traffico utenti ) che invece possono essere sottoposte a downgrade per ridurre i costi e/o ri-allocare risorse dove maggiormente necessario.

Per questo primo monitoraggio a livello macchina ci avverremo del protocollo SNMP impiegando il plugin standard di nagios check_snmp.
Tale protocollo permette un analisi accurata, riducendo al minimo l’intrusività del check e il carico sulla macchina monitorata.

Prima di iniziare la stesura del check vero e proprio dobbiamo però verificare che il demone snmpd sia presente e correttamente configurato sulle macchine che vogliamo monitorare.

Il pacchetto che ci interessa ha nomi diversi a seconda che vi troviate su una distro rpm-based o deb-based, quindi eseguiremo

yum install net-snmp net-snmp-utils

oppure

apt-get install snmp  snmpd

a seconda dei casi.
Dopo aver installato il demone dovremo verificare che accetti connessioni anche da IP differenti da localhost e che esponga tutte le proprietà in sola lettura dall’IP del nostro centreon, aggiungendo le seguenti righe nel file /etc/snmp/snmpd.conf :

# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161

# Full access from the monitor IP
rocommunity public 192.168.0.1

per verificare che tutto sia corretto avviamo il demone

service snmpd start

e verifichiamo che sia in ascolto sulla porta 161 da tutti le sorgenti

$ netstat -na | grep 161

udp 0 0 0.0.0.0:161 0.0.0.0:*

una volta terminata la configurazione dell’agent (ricordatevi che dovrete ripetere la procedura su tutte le macchine che volete monitorare) torniamo sulla macchina centreon ed eseguiamo da riga di comando

$ ./check_snmp_mem.pl -H 192.168.0.10 -w 80,50 -c 90,70 -f

Ram : 63%, Swap : 43% : ; OK | ram_used=1301124;1641056;1846188;0;2051320 swap_used=450468;523262;732567;0;1046524

per verificare che tutto funzioni come ci aspettiamo. Se la macchina remota risponde correttamente possiamo precedere a configurare lo stesso check all’interno dell’interfaccia centreon:

check memory snmp

dopo qualche tempo che il check colleziona dati potremo verificare che anche il grafico dello storico funzioni correttamente:

toolchain-jira-confluence-crowd-linux-snmp-memory

Monitoraggio a livello di processo

Ora che la macchina ha il suo agent snmp in funzione possiamo procedere spediti utilizzando un check analogo per monitorere anche il processo del nostro applicativo.
Per far questo useremo il check_snmp_process: il check di fatto è pensato per monitorare il numero di processi di un dato eseguibile, ma grazie ad un paio di parametri aggiuntivi è possibile filtare i processi dello stesso tipo a seconda del full path dell’eseguibile stesso o dei parametri passati.

Supponiamo di avere una singola macchina su cui siano presenti due processi java, uno per l’istanza di Jira, l’altro per quella di confluence, entrambi i processi sono lanciati tramite l’eseguibile “java” , ma da path differenti.

I nostri check diventeranno quindi:

./check_snmp_process.pl -H 192.168.0.10 -n jira -f -A -m 2000,2024
./check_snmp_process.pl -H 192.168.0.10 -n confluence -f -A -m 2000,2024

le opzioni -f e -A attivano rispettivamente la ricerca del termine specificato (-n jira ) nel path e nei parametri aggiuntivi.
l’opzione -m invece dichiara che non ci interessa monitorare solo il numero di processi (che in entrambi i casi saranno uno solo) ma anche l’utilizzo di memoria degli stessi, fissando i valori 2000 e 2024 rispettivamente come soglia di warning e di critical.

Ancora una volta testiamo il nostro check da riga di comando per verificare che effettivamente “agganci” un singolo processo e che i valori di warning e critical siano correttamente importati per i settaggi di memoria del nostro ambiente, dopodiché possiamo passare alla configurazione centreon e alla verifica del grafico dello storico.
In questo caso avremo effettivamente 2 linee, una per l’utilizzo di memoria, e l’altra per il numero di processi monitorati (che però sarà costantemente fissa sul valore 1)

Check Memoria Java

Monitoraggio a livello applicativo

A questo punto l’unico livello che manca è il monitoraggio della memoria utilizzata dall’applicativo stesso, possibilmente con un livello di dettaglio maggiore di quello fornito dal solo monitoraggio applicativo.

Molti tool Java espongono questo tipo di informazioni tramite interfaccia JMX, e il nostro check andrà ad utilizzare proprio tale funzionalità per fornirci i dettagli che volgiamo.

Tuttavia visto che per realizzare questo controllo ci appoggeremo anche ad un altro tool molto interessante, preferisco fermarmi qui e delegare quest’ultimo punto ad un altro articolo dedicato per poter scendere più nel dettaglio: Centreon e Jolokia: monitoraggio applicativo

A presto!

Annunci

2 pensieri su “Centreon: monitorare l’utilizzo di memoria

  1. Pingback: Centreon e Jolokia: monitoraggio applicativo | Around the Code

  2. Pingback: Ansible: server sotto controllo | Around the Code

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...