75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
|
#! /usr/bin/perl
|
||
|
# anders@aftenposten.no, 2007-04-11
|
||
|
# Shows the response time to fetch a web page
|
||
|
|
||
|
use Sys::Hostname;
|
||
|
use Time::HiRes qw( time );
|
||
|
use IO::Socket;
|
||
|
|
||
|
# ----- config -----
|
||
|
$url = "http://cache.mydomain.org/img/logocomp.gif";
|
||
|
$host = "localhost";
|
||
|
$comment = "2K Comp logo from localhost";
|
||
|
#$host = hostname;
|
||
|
# ----- config -----
|
||
|
|
||
|
sub geturl {
|
||
|
my $data;
|
||
|
my $sock = new IO::Socket::INET (
|
||
|
PeerAddr => $host,
|
||
|
PeerPort => 80,
|
||
|
Proto => 'tcp'
|
||
|
);
|
||
|
return(0) unless ($sock);
|
||
|
print $sock "GET $baseurl HTTP/1.1\nHost: $vhost\nConnection: close\n\n";
|
||
|
while (<$sock>) {
|
||
|
$data .= $_;
|
||
|
}
|
||
|
close($sock);
|
||
|
|
||
|
# Debug
|
||
|
#my @response = split(/\n/, $data);
|
||
|
#my $httpresponse = $response[0];
|
||
|
#chomp($httpresponse);
|
||
|
#$httpresponse =~ s@\r@@g;
|
||
|
#print "HTTP response code: $httpresponse\n";
|
||
|
}
|
||
|
|
||
|
sub cktime {
|
||
|
$vhost = $url;
|
||
|
$vhost =~ s@^\w+://(.+?)/.*@\1@;
|
||
|
|
||
|
$proto = $url;
|
||
|
$proto =~ s@^(\w+)://.*@\1@;
|
||
|
|
||
|
$baseurl = $url;
|
||
|
$baseurl =~ s@^\w+://.+?(/)@\1@;
|
||
|
|
||
|
$tick1 = time();
|
||
|
geturl;
|
||
|
$tick2 = time();
|
||
|
|
||
|
$tspent = $tick2-$tick1;
|
||
|
$msecs = ($tspent * 1000);
|
||
|
|
||
|
printf "timespent.value %.3f\n", $msecs;
|
||
|
}
|
||
|
|
||
|
if ($ARGV[0] && $ARGV[0] eq "autoconf") {
|
||
|
print "yes\n";
|
||
|
} elsif ($ARGV[0] && $ARGV[0] eq "config") {
|
||
|
if ($comment) {
|
||
|
print "graph_title HTTP response time ($comment)\n";
|
||
|
} else {
|
||
|
print "graph_title HTTP response time\n";
|
||
|
}
|
||
|
print "graph_vlabel ms\n";
|
||
|
print "graph_category HTTP\n";
|
||
|
print "graph_info This graph shows the response time in milliseconds, to load a web page\n";
|
||
|
print "timespent.label timespent\n";
|
||
|
print "timespent.type GAUGE\n";
|
||
|
print "timespent.graph yes\n";
|
||
|
} else {
|
||
|
cktime;
|
||
|
}
|