Monitoring Apache Connections And Proceses With MRTG
When running web based applications with Apache as a front end it is useful to monitor the number of connections on Apache and number of Apache processes. Under certain conditions Apache can spawn extra proccesses and many of theem indicated reduced QOS for your end users. They include:
- The back end aplication taking too long to process requests
- network related problems
- resource contention on the box hosting Apache.
#! /usr/bin/perl
use strict;
my $connections = `netstat -n | grep EST | grep "137.158.155.8:443 " | wc -l`;
my $processes = `ps ax | grep -c httpd`;
chomp($connections);
chomp($processes);
print $connections . "\n";
print $processes . "\n";
Edit the ip address to match your host. This will give you a count of connections and processes. Next the MRTG conf:
# Created by
# /usr/local/bin/cfgmaker public@localhost
### Global Config Options
# for UNIX
WorkDir: /srv/www/vhosts/vula.uct.ac.za/mrtg/
IconDir: /mrtg/icons/
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
Options[_]: growright, noinfo, nopercent, integer, gauge
EnableIPv6: no
### Interface 1 >> Descr: 'em0' | Name: '' | Ip: '137.158.128.44' | Eth: '' ###
MaxBytes[_]: 4061814272
ShortLegend[_]:
YLegend[_]: https connections
AddHead[_]: <link href="/library/skin/default/tool.css" type="text/css" rel="stylesheet" media="all" />
PageFoot[_]: </div>
kilo[_]: 1024
Target[https-connections]: `/usr/local/sakaiscripts/https-connections.pl`
Title[https-connections]: HTTPS Connections
PageTop[https-connections]: <div class="portletBody"><H3>HTTPS Connections</H3>
LegendI[https-connections]: connections:
LegendO[https-connections]: httpd processes:
Legend1[https-connections]: HTTPS connections (5 min interval)
Legend2[https-connections]: httpd processes
Legend3[https-connections]: Maximal HTTPS connections (5 min interval)
Legend4[https-connections]: Maximal httpd processes
WithPeak[https-connections]: wmy
once again make sure the WorkDir and traget paths match the paths for your instalation. Workdir needs to be accesible via a browser (as MRTG will output to this directory). Now test your script by running:
env LANG=C /usr/bin/mrtg /usr/local/sakaiscripts/https-connections.cfg
Note MRTG will give warnings about the history files missing the first two times you run it. After that it should be silent. Finaly add the line to your crontab to run every 5 minute.