]> mj.ucw.cz Git - netgrind.git/blob - post/graph-http-summary
TODO: A note on IPv6
[netgrind.git] / post / graph-http-summary
1 #!/usr/bin/perl
2 # Draw graphs of HTTP transactions from http-stats output
3 # (c) 2003 Martin Mares <mj@ucw.cz>, GPL'ed
4
5 use strict;
6 use warnings;
7 use POSIX;
8
9 my $datafile = "gp.tmp";
10 open D, ">$datafile" or die;
11
12 my @colnames = ();
13 my @ewma = ( 0, 0, 0 );
14 my $ew = 0.9;
15 my $eww = 1-$ew;
16 while (<>) {
17         chomp;
18         if (/^#/) {
19                 s/^#\s+//;
20                 @colnames = split /\t/;
21         } else {
22                 my $i = 0;
23                 s/\([^)]*\)//g;
24                 my %row = map { $colnames[$i++] => $_ } split /\t/;
25                 my $time = POSIX::strftime("%d-%m-%Y %H:%M:%S", localtime $row{'time'});
26                 my $w = $row{'width'};
27                 my @r = (
28                         $row{'Total'} / $w,
29                         $row{'TCPErr'} / $w,
30                         ($row{'Total'} - $row{'NTimings'}) / $w
31                 );
32                 print D "$time";
33                 for (my $i=0; $i<=$#r; $i++) {
34                         $ewma[$i] = $ew*$ewma[$i] + $eww*$r[$i];
35                         print D "\t", $ewma[$i];
36                 }
37                 print D "\n";
38         }
39 }
40
41 close D;
42 open GP, "|gnuplot" or die;
43 print GP <<EOF
44 set terminal png
45 set grid
46 set style data lines
47 set title "HTTP Transactions: Summary"
48 set xlabel "Time"
49 set ylabel "Transactions/s [EWMA $ew]"
50 set xdata time
51 set timefmt "%d-%m-%Y %H:%M:%S"
52 set format x "%d/%m\\n%H:%M"
53 #set xtics 86400
54 set mxtics 3600
55 plot    "$datafile" using 1:3 title "Total", \\
56         "$datafile" using 1:4 title "Terminated by TCP error", \\
57         "$datafile" using 1:5 title "Not considered for timings"
58 EOF
59 ;
60 close GP;