Matteo Redaelli

Computer Science OpenSource Linux Africa Volontariato Ambiente Energia solare Mezzi Pubblici Piste ciclabili

Http statistics with curl 15 Apr 2009

Filed under: Me — Matteo @ 16:49

apache-hourlyWith CURL and RRDTOOL it is possible to collect http request statistics.

Below you can find the 2 scripts

#************************

#curl-rrdtool.sh

#************************

#!/bin/bash
# Paths… adjust as necessary
BASE=”/home/matteo/curl”
CONFIG=”config”
CURL=”/usr/bin/curl”
RRDTOOL=”/usr/bin/rrdtool”
# Given a URL, return a file name
# ensure we have the needed parameters
# Strip out any non alphas, replace with underscores,
# and add a host name
FILE=apache.rrd
# Can only return numeric results, so global $FILE
# has the result
# Called to create the RRD
create_rrd () {
# ensure we have the needed parameters
# Convert the URL to a name and build the RRD
$RRDTOOL create “$BASE/$FILE” -s 30 \
DS:total:GAUGE:60:0:U DS:dns:GAUGE:60:0:U DS:connect:GAUGE:60:0:U \
DS:pretransfer:GAUGE:60:0:U DS:starttransfer:GAUGE:60:0:U \
RRA:AVERAGE:0.5:1:288 RRA:AVERAGE:0.5:6:336 RRA:AVERAGE:0.5:24:372 \
RRA:AVERAGE:0.5:144:730 RRA:MIN:0.5:1:288 RRA:MIN:0.5:6:336: \
RRA:MIN:0.5:24:372 RRA:MIN:0.5:144:730 RRA:MAX:0.5:1:288 \
RRA:MAX:0.5:6:336 RRA:MAX:0.5:24:372 RRA:MAX:0.5:144:730 \
RRA:LAST:0.5:1:288
}
if [ ! -f “$BASE/$FILE” ]; then
create_rrd $URL
fi

while true ; do
$CURL -b /tmp/cookies.txt -c /tmp/cookies.txt -d “username=test1&password=XXXXX” -s http://learninglab.group.mysite.com/moodle/login/index.php
OUT=`$CURL -b /tmp/cookies.txt -c /tmp/cookies.txt  -m 30 -w %{time_total}:%{time_namelookup}:%{time_connect}:\
%{time_pretransfer}:%{time_starttransfer} -o /dev/null -s http://learninglab.group.mysite.com/moodle/`
$RRDTOOL update  “$BASE/$FILE” -t “total:dns:connect:pretransfer:starttransfer” N:$OUT
sleep 30
done

#************************

#curl-rrdtool-chart.sh

#************************

#!/bin/sh
MEASUREMENT=”matteo”
SITE=”http://learninglab.group.mysite/moodle/”
FILE=/home/matteo/curl/apache
DEFS=” DEF:total=$FILE.rrd:total:AVERAGE \
DEF:dns=$FILE.rrd:dns:AVERAGE \
DEF:connect=$FILE.rrd:connect:AVERAGE \
DEF:pretransfer=$FILE.rrd:pretransfer:AVERAGE \
DEF:starttransfer=$FILE.rrd:starttransfer:AVERAGE”
width=800
height=400
rrdtool graph $FILE-hourly.png \
–width $width –height $height \
-r -s end-30min \
-t “Performance of $SITE from $MEASUREMENT” -v “Seconds” \
$DEFS \
AREA:total#FF0000:”Data Transfer” \
AREA:starttransfer#CAAA00:”First Byte” \
AREA:connect#0000FF:”Connection” \
AREA:dns#00FF00:”DNS Lookup” \
COMMENT:”\n” COMMENT:”\n” \
GPRINT:total:AVERAGE:”Average request time %0.2lf %Ss” \
GPRINT:total:MIN:”Min/Max %0.2lf %Ss/” \
GPRINT:total:MAX:”%0.2lf %Ss” \
COMMENT:”\n” \
GPRINT:total:LAST:”Current request time %0.2lf %Ss”

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s