Usare MRTG per monitorare Apache

Breve guida alla configurazione del monitoraggio di Apache utilizzando MRTG

Requisiti
Apache con attivato il MOD_STATUS
Perl
Mrtg (testato su 2.10.13)
apache.mrtg.tgz
libwww-perl (testata la 5.64)

Installazione MRTG
tar zxvf mrtg-2.10.13.tar.gz
cd mrtg-2.10.13
./configure
make
make install


Ipotizziamo che i server da monitorare siano 3 con ip privati: 10.0.0.1, 10.0.0.2, 10.0.0.3
e che mrtg venga eseguito su un altro server: 10.0.0.5.

Configurazione Apache
Abilitiamo nella configurazione di apache il mod_status e gli host autorizzati a prendere visione del server-status:
Nel suo file di configurazione, httpd.conf, assicurarsi che siano presenti le seguenti righe:
ServerSignature On
AddModule mod_status.c
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.0.0.5

riavviamo il server Apache e controlliamo che l'host sul quale verrà eseguito mrtg abbia l'autorizzazione per leggere i valori che vogliamo monitorare, da 10.0.0.5 provare:
lynx http://10.0.0.1/server-status?auto
lynx http://10.0.0.2/server-status?auto
lynx http://10.0.0.3/server-status?auto

O usare un qualsiasi browser con gli URL indicati.

Ora possiamo intraprendere due strade:
1) Utilizzare apache.mrtg per la generazione di grafici
2) Utilizzare solo mrtg avvalendoci dello script in perl di apache.mrtg

1 - Usare apache.mrtg
Dopo aver estratto il pacchetto apache.mrtg.tgz ad esempio su /usr/src/apache.mrtg/ modificare i file di configurazione.
batch:
#!/bin/sh
# batch file to create N sites ...
BATCHBIN="./mkapachemrtg.sh"

$BATCHBIN clienti     "-url http://10.0.0.1/server-status?auto"
$BATCHBIN commercio   "-url http://10.0.0.2/server-status?auto"
$BATCHBIN forum       "-url http://10.0.0.3/server-status?auto"


mkapachemrtg.sh
HTMLHOME="/www/htdocs/mrtg" # mrtg output dir
SCRIPTHOME="/usr/src/apache.mrtg" # where is the apache.mrtg.pl

URLHOME="http://10.0.0.5/mrtg" # url ...
CONFHOME="/usr/src/apache.mrtg" # where the apache.mrtg.cfg files go
MRTGBIN="/usr/local/mrtg-2/bin/mrtg" # mrtg bin


Proviamo ad eseguire apache.mrtg.pl per verificare che legga correttamente il valore SERVERS:
./apache.mrtg.pl -url http://10.0.0.3/server-status?auto -info SERVERS
1
6

Confrontiamolo con quanto visibile all'indirizzo http://10.0.0.3/server-status?auto :
BusyServers: 1
IdleServers: 6


E' possibile che il comando non vada a buon fine per la mancanza del modulo perl LWP/Simple.pm. Soluzione:
tar zxvf libwww-perl-5.64.tar.gz
perl Makefile.pl && make && make check && make install


Ora possiamo eseguire batch:
./batch
che ci restituirà:
[...] now add this to your crontab
*/5 * * * * /usr/local/mrtg-2/bin/mrtg //clienti.apache.mrtg.cfg
*/5 * * * * /usr/local/mrtg-2/bin/mrtg //commercio.apache.mrtg.cfg
*/5 * * * * /usr/local/mrtg-2/bin/mrtg //forum.apache.mrtg.cfg
[...]


crontab -e e aggiungiamo le 3 stringhe.

Possiamo visualizzare infine i grafici che si aggiorneranno ogni 5 minuti su
http://10.0.0.5/mrtg/clienti/apache.html
http://10.0.0.5/mrtg/commercio/apache.html
http://10.0.0.5/mrtg/forum/apache.html


2 - Utilizzo di direttamente dai file di configurazione di mrtg inserendo i target scelti
    * ApacheWithMRTGBusyApacheServers - Monitoring Number of Busy Apache Servers
    * ApacheWithMRTGBytesPerRequest - Monitoring Bytes per request sent to Apache
    * ApacheWithMRTGBytesPerSecond - Monitoring Bytes per second sent to Apache
    * ApacheWithMRTGCPUUsage - Monitoring CPU Usage with Apache
    * ApacheWithMRTGChildStatus - Monitoring Apache Child Status
    * ApacheWithMRTGIdleServers - Monitoring Apache Idle Servers
    * ApacheWithMRTGRequestsPerSecond - Monitoring Requests per second sent to Apache
    * ApacheWithMRTGTotalAccesses - Monitoring total accesses to your Apache Server
    * ApacheWithMRTGTotalKilobytesTransferred - Monitoring Total Kilobytes Transferred with Apache
    * ApacheWithMRTGUptime - Monitoring Apache Uptime


Ad esempio:
Target[texilee.apache.servers]: `/usr/src/apache.mrtg/apache.mrtg.pl -url http://localhost/server-status?auto -info SERVERS`
Options[texilee.apache.servers]: nopercent, integer,gauge
Title[texilee.apache.servers]: Child Status
MaxBytes[texilee.apache.servers]: 20
YLegend[texilee.apache.servers]: ServStatus
LegendI[texilee.apache.servers]: BServers:
LegendO[texilee.apache.servers]: IServers:
ShortLegend[texilee.apache.servers]: Workers
PageTop[texilee.apache.servers]: Apache: Child Status
Legend1[texilee.apache.servers]: Busy Workers
Legend2[texilee.apache.servers]: Idle Workers
Legend3[texilee.apache.servers]: Busy Workers
Legend4[texilee.apache.servers]: Idle Workers


Si può prendere spunto dal file apache.mrtg.cfg per la creazione dei grafici.
Personalmente preferisco utilizzare la seconda strada ;)

Privacy Policy