system:monitoring:lighttpd
Table of Contents
Monitoring Lighttpd
When lighty has been compiled with support for rrdtool, it can generate nice graphs about it's usage (traffic, requests). The following shows how to enable this feature.
Lighttpd Config
The module mod_rrdtool
has to be loaded. Then the following configuration
settings need to be set:
rrdtool.binary = "/usr/bin/rrdtool" rrdtool.db-name = "/var/run/lighttpd/lighttpd.rrd"
Generating The Graphs
To generate graphs from the RRD database, a custom shell script has to be created:
#!/bin/sh RRDTOOL=/usr/bin/rrdtool OUTDIR=/var/www/nwl.cc/htdocs-secure/lighttpd_graph/ INFILE=/var/run/lighttpd/lighttpd.rrd OUTPRE=lighttpd-traffic WIDTH=600 HEIGHT=350 DISP="-v bytes --title TrafficWebserver \ DEF:binraw=$INFILE:InOctets:AVERAGE \ DEF:binmaxraw=$INFILE:InOctets:MAX \ DEF:binminraw=$INFILE:InOctets:MIN \ DEF:bout=$INFILE:OutOctets:AVERAGE \ DEF:boutmax=$INFILE:OutOctets:MAX \ DEF:boutmin=$INFILE:OutOctets:MIN \ CDEF:bin=binraw,-1,* \ CDEF:binmax=binmaxraw,-1,* \ CDEF:binmin=binminraw,-1,* \ CDEF:binminmax=binmaxraw,binminraw,- \ CDEF:boutminmax=boutmax,boutmin,- \ AREA:binmin#ffffff: \ STACK:binmax#f00000: \ LINE1:binmin#a0a0a0: \ LINE1:binmax#a0a0a0: \ LINE2:bin#efb71d:incoming \ GPRINT:bin:MIN:%.2lf \ GPRINT:bin:AVERAGE:%.2lf \ GPRINT:bin:MAX:%.2lf \ AREA:boutmin#ffffff: \ STACK:boutminmax#00f000: \ LINE1:boutmin#a0a0a0: \ LINE1:boutmax#a0a0a0: \ LINE2:bout#a0a735:outgoing \ GPRINT:bout:MIN:%.2lf \ GPRINT:bout:AVERAGE:%.2lf \ GPRINT:bout:MAX:%.2lf \ " $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT OUTPRE=lighttpd-requests DISP="-v req --title RequestsperSecond -u 1 \ DEF:req=$INFILE:Requests:AVERAGE \ DEF:reqmax=$INFILE:Requests:MAX \ DEF:reqmin=$INFILE:Requests:MIN \ CDEF:reqminmax=reqmax,reqmin,- \ AREA:reqmin#ffffff: \ STACK:reqminmax#00f000: \ LINE1:reqmin#a0a0a0: \ LINE1:reqmax#a0a0a0: \ LINE2:req#00a735:requests" $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
To have the graphs being updated regularly, add a line to /etc/crontab:
0,20,40 * * * * nice -n 10 /opt/lighttpd_rrdtool/gen_graphs.sh > /dev/null 2>&1
which assumes that the script given above has been saved as /opt/lighttpd_rrdtool/gen_graphs.sh and made executable.
The HTML Index File
A sample index.html could look like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Lighttpd traffic & requests</title> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> </head> <body> <div> <h2>Lighttpd Traffic</h2> <img src="lighttpd-traffic-hour.png" alt="graph1"><br> <img src="lighttpd-traffic-day.png" alt="graph2"><br> <img src="lighttpd-traffic-month.png" alt="graph3"><br> </div> <div> <h2>Lighttpd Requests</h2> <img src="lighttpd-requests-hour.png" alt="graph4"><br> <img src="lighttpd-requests-day.png" alt="graph5"><br> <img src="lighttpd-requests-month.png" alt="graph6"><br> </div> </body> </html>
system/monitoring/lighttpd.txt · Last modified: 2009/01/08 15:31 by 127.0.0.1