GiBiLamp 7 – Monitorare lo stato del server web

Continuiamo la nostra serie dedicata a GiBiLamp mostrando come monitorare lo stato del nostro server web.

Monitoraggio

Per offrire un buon servizio web non è sufficiente creare i siti, ospitarli ed una volta appurato che questi funzionano dimenticarsene. E’ sempre buona abitudine utilizzare degli strumenti che possano avvisarci e/o tenere sotto controllo la situazione del nostro sistema.

Esistono parecchi programmi in grado di eseguire queste operazioni, ma noi ci soffermeremo soprattutto sulla accoppiata cacti / snmp.

Un altro  strumento valido per l’analisi del carico di un server è AwStats, il cui sito di riferimento è http://awstats.sourceforge.net/

Cacti e SNMP

L’accoppiata di questi due applicativi è in grado di generare uno strumento di controllo sullo stato di salute del nostro server molto efficacie e di facile comprensione. Infatti grazie ai dati raccolti dal demone SNMP è possibile poi creare dei grafici raggiungibili tramite interfaccia web e presentati all’utente in modo chiaro.

Ecco di seguito un esempio, che riguarda il carico di cpu di un server nell’arco di una giornata:

Immagine di un grafico di esempio generato con Cacti

Oltretutto Cacti permette all’utente di visualizzare i grafici del medesimo apparato (carico di CPU) sia per le ultime 24 ore, che per la settimana precedente, che per altri specifici intervalli.

Lo strumento è di indubbio valore ed i template (così si chiamano i file di configurazione di cacti)  più diffusi sono in grado di analizzare :

  • carico di sistema (CPU, RAM, dischi)
  • utenti collegati
  • carico della rete
  • carico Mysql
  • carico Apache

Prerequisiti

Per installare Cacti ci sono dei prerequisiti da soddisfare, ecco ciò che ci serve:

  • Apache
  • Mysql
  • PHP
  • RRD tools (installabili con il comando apt-get install rrdtool)
  • PHP-cli (apt-get install php5-cli)
  • PHP-snmp (apt-get install php-snmp)

Installazione e configurazione SNMP

SNMP, un demone composto da client e server, è installabile con i comandi:

  • apt-get install snmpd
  • apt-get install snmp

Per questioni di sicurezza è bene che il demone SNMP risponda solo sull’interfaccia di rete privata 127.0.0.1 o su indirizzi IP ben filtrati dal firewall. Il servizio SNMP è uno degli strumenti preferiti per attacchi informatici verso server. Noi abiliteremo il demone solo sulla interfaccia locale 127.0.0.1 impedendo di fatto che qualsiasi servizio dall’esterno possa sfruttarne le debolezze.

Per ottenere questo comportamento è sufficiente controllare che nel file /etc/default/snmpd siano presenti queste due righe:

 SNMPDRUN=yes
 SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

Ovvero, il demone parte all’avvio del server ed ascolta solo sulla interfaccia lo

Ora è possibile configurare il demone per permettere accesso al servizio snmp solo ad alcuni gruppi. Se nel file di configurazione /etc/snmp/snmpd.conf inseriamo la riga:

com2sec readonly localhost mycommunity

solo il gruppo che specifica la parola “mycommunity” potrà visualizzare i dati snmp.

Per verificare tale comportamento è sufficiente lanciare il comando snmpwalk in questo modo:

snmpwalk -Os -c mycommunity -v 1 localhost system

In questo caso verranno visualizzati i dettagli snmp, ma se provassimo a lanciare il comando standard:

snmpwalk -Os -c public -v 1 localhost system

non otterremmo risposta, dato che il gruppo public non è abilitato alla visualizzazione dei dati snmp.

Perfetto, ora il servizio snmp è attivo ed è pronto per essere sfruttato. Ricordo che il sito di riferimento per snmp è http://www.net-snmp.org/

Installazione e configurazione di Cacti

Cacti può essere installato con il comando:

apt-get install cacti

Ma, sebbene sia un sostenitore della semplicità in questo caso preferisco scaricare il pacchetto direttamente dal sito ufficiale di cacti (http://www.cacti.net) ed installarlo con pochi e brevi passaggi.

Io prediligo il sorgente in formato tar.gz. Una volta scaricati e decompressi i sorgenti è sufficiente

  1. creare un apposito sito per cacti
  2. copiarci dentro il contenuto dei sorgenti
  3. creare un database di riferimento (p. es. cacti)
  4. creare un nuovo utente a livello di database che possegga i diritti di lettura e scrittura sul database cacti
  5. importare il file cacti.sql all’interno del nuovo db (mysql nome_database_cacti -u nome_utente_cacti -p password_cacti < cacti.sql)

Fatto ciò è sufficiente editare il file di configurazione presente all’interno dello spazio web cacti in include/config.php e assegnare i corretti valori alle variabili di seguito:

$database_type = "mysql";
 $database_default = "nome_database_cacti";
 $database_hostname = "localhost";
 $database_username = "utente_cacti_db";
 $database_password = "password_cacti_db";

Un ultimo accorgimento, la cartella rra e la cartella log, sempre presenti nello spazio web di cacti devono lasciare la possibilità allo script eseguito dal server di scrivere dei file al loro interno.

Per raccogliere i dati necessari c’è da schedulare via crontab l’esecuzione dello script poller.php presente nella root di cacti, esempio:

*/5 * * * * cactiuser php5 /var/www/cacti/poller.php > /dev/null 2>&1

In questo modo il nostro script raccoglierà i dati per tutti i template da noi configurati ogni 5 minuti.

Personalizzazione grafici

Non entrerò nel merito di come creare e configurare i grafici, ma ecco dei link molto interessanti.

La sezione del manuale di cacti che spiega come generare grafici con cacti ed snmp:

http://docs.cacti.net/manual:087

Download di template per monitorare mysql ed apache, oltre ad una ottima guida per installare e creare template:

http://code.google.com/p/mysql-cacti-templates/

Serie GiBiLamp

< Vai all’articolo precedente nella serie GiBiLamp

L’articolo successivo sarà pubblicato Venerdì 10 Dicembre >

linux, sistemista