mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
126d7da86c
commit
bd6069ae14
110
plugins/other/multi_http_responsetime
Executable file
110
plugins/other/multi_http_responsetime
Executable file
@ -0,0 +1,110 @@
|
||||
#! /usr/bin/perl
|
||||
# This plugin based on http_responestime designed by Anders Nordby
|
||||
#
|
||||
# It is written to control the quality of an internet conneting by
|
||||
# downloading a favicon.ico file from a lot - unlimited - count of
|
||||
# domains.
|
||||
#
|
||||
# Don't forget zu fill in the following lines into the munin-node
|
||||
# - ormally at /etc/muni/plugin-conf.d/ - an than restart munin
|
||||
#
|
||||
# [multi_http_responsetime]
|
||||
# user root
|
||||
# Jo Hartmann (Version 08-0912)
|
||||
|
||||
use Sys::Hostname;
|
||||
use Time::HiRes qw( time );
|
||||
use IO::Socket;
|
||||
|
||||
# ----- config -----
|
||||
push(@url_array, "http://www.google.de");
|
||||
push(@url_array, "http://www.t-online.de");
|
||||
push(@url_array, "http://www.telekom.de");
|
||||
push(@url_array, "http://www.ebay.de");
|
||||
push(@url_array, "http://www.tus-vahrenwald.de/verein/images");
|
||||
$host = "localhost";
|
||||
$comment = "HTTP-Ladezeiten von Web-Seiten";
|
||||
#$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 {
|
||||
for ($i=0; $i <= $max_index; ++$i) {
|
||||
$url = $url_array[$i], "/favicon.ico";
|
||||
|
||||
$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$i.value %.3f\n", $msecs;
|
||||
}
|
||||
}
|
||||
|
||||
# Count of urls
|
||||
$max_index = $#url_array;
|
||||
|
||||
if ($ARGV[0] && $ARGV[0] eq "autoconf") {
|
||||
print "yes\n";
|
||||
} elsif ($ARGV[0] && $ARGV[0] eq "config") {
|
||||
if ($comment) {
|
||||
print "$comment\n";
|
||||
} else {
|
||||
print "graph_title HTTP response time \n";
|
||||
}
|
||||
print "graph_scale no\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";
|
||||
for ($i=0; $i <= $max_index; ++$i) {
|
||||
$vhost = $url_array[$i];
|
||||
$proto = $url_array[$i];
|
||||
$vhost =~ s@^\w+://(.+?)/.*@\1@;
|
||||
$proto =~ s@^(\w+)://.*@\1@;
|
||||
|
||||
# If url_array[] is a domain, vhost will be contain the the strinf "http://"
|
||||
if($vhost =~ /http/) {
|
||||
print "timespent$i.label $vhost\n";
|
||||
} else {
|
||||
print "timespent$i.label $proto://$vhost\n";
|
||||
}
|
||||
|
||||
print "timespent$i.info Ladezeit von $url_array[$i]/favicon.ico\n";
|
||||
print "timespent$i.type GAUGE\n";
|
||||
print "timespent$i.graph yes\n";
|
||||
}
|
||||
} else {
|
||||
cktime;
|
||||
}
|
Loading…
Reference in New Issue
Block a user