EUCOOKIELAW_BANNER_TITLE

Cruscotto server

Per potere amministrare efficacemente un sistema linux bisogna tenerne attentamente sotto controllo i parametri operativi. E’ vero che ogni distribuzione ha un congruo numero di tool per la verifica di ogni parametro essenziale. Ritengo però opportuno avere a disposizione un sistema integrato in grado di dare una visione di assieme del sistema sotto controllo.

Dei tanti pacchetti che ho avuto modo, nel tempo, di provare quello che più soddisfa le mie esigenze è Monitorix. E’ un progetto maturo, è nato infatti nel 2005, per implementare un sistema leggero ed open-source per l’analisi di servizi e risorse di sistema. E’ basato su un daemon perl  che periodicamente raccoglie i dati richiesti sul sistema, e di uno script CGI che ha lo scopo di visualizzarli in formato grafico interfacciandosi alle librerie RRDtool. E’ attivamente mantenuto.

Le informazioni sono restituite via http. Monitorix può essere configurato per utilizzare un server apache, ma integra anche un server web interno, configurato per default per utilizzare la porta 8080. Io preferisco utilizzare questa seconda opzione, tenendo la porta utilizzata filtrata, consentendo quindi l’accesso solo via ssh o vpn.

I dati visualizzati sono molto completi, come è possibile vedere da questo esempio:

Monitorix

Grafici uso CPU

Uso dei filesystems

Uso dei filesystems

Uso delle risorse di rete

Uso delle risorse di rete

I parametri che si possono tenere sotto controllo sono veramente tantissimi, c’è finanche un modulo per i gruppi di continuità APC, e c’è la possibilità di centralizzare la visualizzazione dei dati di più server su un unico punto di accesso mediante l’opzione multihost.

L’installazione è molto semplice. Può essere effettuata via apt aggiungendo il repository IzziSoft alla propria lista:


echo "deb http://apt.izzysoft.de/ubuntu generic universe" >>/etc/apt/sources.list
wget http://apt.izzysoft.de/izzysoft.asc
apt-key add izzysoft.asc
apt-get update

e poi installare il programma con


apt-get install monitorix

In questo modo apt provvederà a risolvere tutte le dipendenze.

L’alternativa, che personalmente preferisco, è quella di risolvere a monte le dipendenze:


apt-get update
apt-get install rrdtool perl libwww-perl libmailtools-perl libmime-lite-perl librrds-perl libdbi-perl libxml-simple-perl libhttp-server-simple-perl libconfig-general-perl libio-socket-ssl-perl

Scaricare il package .deb da http://www.monitorix.org ed installarlo manualmente


dpkg -i monitorix*.deb

Nel caso vi siano problemi con dipendenze mancanti ricordo che è possibile risolvere con il comando apt-get -f install.
E’ inutile sottolineare come l’installazione vada effettuata da root.
Sulla pagina di download è possibile scaricare sia il tarball che i pacchetti per altre distribuzioni linux.

Monitorix parte automaticamente al termine della installazione con i parametri standard. La configurazione è personalizzabile editando il file /etc/monitorix/monitorix.conf. Per i sistemi debian-based vi è un file di configurazione aggiuntivo su /etc/monitorix/conf.d/00-debian.conf.

Aprendo con il vostro editor preferito (io uso vi) il file di configurazione i parametri da modificare sono sicuramente i primi due, title e hostname. Più avanti è possibile gestire la configurazione – in stile apache – del server web interno, che, come dicevo prima, io utilizzo su una porta molto alta chiusa verso internet ed a cui accedo solitamente via ssh. Di seguito ci sono i nomi dei file di log analizzati dal daemon di raccolta dati, che devono corrispondere a quelli in uso sul sistema da controllare. Più avanti c’è una tabella che consente di attivare e disattivare singoli grafici nella videata restituita dal CGI di visualizzazione. Alcuni di questi grafici richiedono la presenza di componenti specifici del sistema operativo: ad esempio il modulo disk si appoggia su smartmontools, quindi vale sempre il vecchio detto RTFM, e dare una occhiata prima alla documentazione.

Una volta che avrete terminato le opzioni di configurazione, sarà necessario riavviare il servizio con il solito service monitorix restart o con /etc/init.d/monitorix restart. Ah, se usate systemd il comando da usare è systemctl restart monitorix, ma permettetemi di invitarvi caldamente a passare ad una distro con un sistema di init meno invasivo 😉

Monitorix è anche in grado di generare allarmi se alcuni dei parametri misurati superano valori di soglia. Un esempio è il modulo mail, che può tenere sotto controllo sia il numero di messaggi ricevuti che quelli accodati per l’invio. Le soglie sono definite nel file di configurazione, mentre per ogni soglia è definibile uno script da eseguire al momento del superamento del valore limite. Io utilizzo un alert via email di questo tipo:

email="<email>"
file=$(mktemp)
server="<nome server>"
subject="ALLARME: soglia mqueue su $server"

echo "Attenzione:" >$file
echo "Monitorix su $server ha riscontrato il superamento della" >>$file
echo "soglia di attenzione nel numero di mqueue email per" >>$file
echo "unita' di tempo." >>$file
echo "" >>$file
echo "Il limite impostato e' $1 ogni $2 secondi, il valore rilevato e' $3" >>$file

mail -s "$subject" "$email" < $file

A questo punto il sistema è configurato per raccogliere i dati. Per la visualizzazione basta puntare il browser sull’URL formato dalla macchina e dai parametri specificati nel file di configurazione (che sono, in default, http://127.0.0.1:8080/monitorix).

Buona analisi!

Pubblicato in Prestazioni, Tools Taggato con: ,

Vsphere: gestione veloce vm da cli

Mi capita spesso di dovere controllare lo stato di macchine virtuali su server vsphere mentre sono on the road. Quando ho banda disponibile uso per questo una vm con il software di gestione vmware, ma in situazioni di emergenza fin troppo spesso c’è il vecchio buon Murphy a mettersi di traverso, ed a riportarmi alla memoria i tempi dei modem V21 a 300 baud. Quando è così l’unica soluzione praticabile rimane l’ssh, il vecchio e migliore amico di ogni sysadmin.

Per semplificare ulteriormente le cose e ridurre al minimo la quantità di dati trasferiti ho scritto due semplicissimi script per le funzioni essenziali.

Il primo, listvm, visualizza le vm installate sul server:

#!/bin/bash
#
# lista vm attive
# (C) Giorgio Rutigliano, 2013-2014
#
echo "id->nome"
echo "------------------"
vim-cmd vmsvc/getallvms | sed -e '1d' -e 's/ \[.*$//' | awk '$1 ~ /^[0-9]+$/ {print $1"->"substr($0,8,80)}'

L’output di questo comando è una piccola tabella che mostre le vmid ed il relativo nome di tutte le macchine virtuali installate.

Il secondo scrip, invece, consente di effettuare le operazioni base su una specifica istanza di vm:

#!/bin/bash
#
# vm
# gestione veloce VM
# (C) Giorgio Rutigliano, 2013-2014
#
if [ "$#" -ne 2 ]; then
 echo "Uso: vm <vmid> <comando>"
 exit
fi
# il primo parametro deve essere numerico
if ! [ "$1" -eq "$1" ] 2>/dev/null; then
 echo "Errore: il primo parametro e' l'ID della VM"
 exit
fi
# conversione case secondo parametro
opt=`echo $2 | awk '{print tolower($0)}'`
# opzioni
case "$2" in

boot) vim-cmd vmsvc/power.on $1
 ;;

shut) vim-cmd vmsvc/power.shutdown $1
 ;;

off) vim-cmd vmsvc/power.off $1
 ;;

reboot) vim-cmd vmsvc/power.reboot $1
 ;;

status) vim-cmd vmsvc/power.getstate $1
 ;;

*) echo "comando errato (boot|shut|off|reboot|status)"
 ;;

esac

I due comandi in accoppiata consentono di gestire semplicemente e rapidamente le operazioni base anche in condizioni limite, leggi uno smartphone con copertura radio ridottissima.

Pubblicato in Script, Virtualizzazione Taggato con: , ,