1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 18:41:03 +00:00

Merge pull request #206 from aptivate/master

Improved HTTP plugin, new CPU and page fault plugins
This commit is contained in:
Kenyon Ralph 2013-02-02 22:30:08 -08:00
commit 29e6559e8b
6 changed files with 385 additions and 27 deletions

View file

@ -10,7 +10,12 @@
=head1 CONFIGURATION
[http_request_time]
env.url http://127.0.0.1/1 http://127.0.0.1/2 http://127.0.0.1/3
env.url http://127.0.0.1/1
env.url2 http://127.0.0.1/2
env.url3 http://www.example.com
env.url3_name some_munin_internal_name
env.url3_label Some random page on our website
env.url3_proxy http://firewall:3128
=head1 MAGIC MARKERS
@ -41,7 +46,6 @@ sub clean {
return $surl;
};
if (! eval "require LWP::UserAgent;")
{
$ret = "LWP::UserAgent not found";
@ -50,12 +54,19 @@ if (! eval "require LWP::UserAgent;")
}
}
my $URL = $ENV{'url'}?$ENV{'url'}:"http://127.0.0.1/";
my %URLS;
foreach $_ (split(/ /,$URL)){
$URLS{$_}={
url=>$_,
surl=>clean($_),
for (my $i = 1; $ENV{"url$i"}; $i++)
{
my $url = $ENV{"url$i"};
my $proxy = $ENV{"url${i}_proxy"};
my $name = $ENV{"url${i}_name"} || clean($url);
my $label = $ENV{"url${i}_label"} || $url;
$URLS{$name}={
url=>$url,
proxy=>$proxy,
label=>$label,
time=>'U'
};
}
@ -94,50 +105,67 @@ if ( defined $ARGV[0] and $ARGV[0] eq "config" )
print "graph_category other\n";
my @go;
foreach my $url (values %URLS) {
print "$$url{'surl'}.label $$url{'url'}\n";
print "$$url{'surl'}.info The response time of a single request\n";
print "$$url{'surl'}.min 0\n";
print "$$url{'surl'}.draw LINE1\n";
push(@go,$$url{'surl'});
foreach my $name (keys %URLS) {
my $url = $URLS{$name};
print "$name.label $$url{'label'}\n";
print "$name.info The response time of a single request\n";
print "$name.min 0\n";
print "$name.draw LINE1\n";
push(@go, $name);
}
# multigraphs
foreach my $url (values %URLS) {
print "\nmultigraph http_request_time.$$url{'surl'}\n";
foreach my $name (keys %URLS) {
my $url = $URLS{$name};
print "\nmultigraph http_request_time.$name\n";
print "graph_title $$url{'url'}\n";
print "graph_args --base 1000\n";
print "graph_vlabel response time in ms\n";
print "graph_category other\n";
print "$$url{'surl'}.label $$url{'url'}\n";
print "$$url{'surl'}.info The response time of a single request\n";
print "$$url{'surl'}.min 0\n";
print "$$url{'surl'}.draw LINE1\n";
print "$name.label $$url{'label'}\n";
print "$name.info The response time of a single request\n";
print "$name.min 0\n";
print "$name.draw LINE1\n";
}
exit 0;
}
my $ua = LWP::UserAgent->new(timeout => 15);
foreach my $name (keys %URLS) {
my $url = $URLS{$name};
foreach my $url (values %URLS) {
my $t1=[gettimeofday];
if ($url->{proxy}) {
$ua->proxy(['http', 'ftp'], $url->{proxy});
}
else {
$ua->proxy(['http', 'ftp'], undef);
}
# warm up
my $response = $ua->request(HTTP::Request->new('GET',$$url{'url'}));
# timed run
my $t1=[gettimeofday];
$response = $ua->request(HTTP::Request->new('GET',$$url{'url'}));
my $t2=[gettimeofday];
if ($response->is_success) {
$$url{'time'}=sprintf("%d",tv_interval($t1,$t2)*1000);
};
};
print("multigraph http_request_time\n");
foreach my $url (values %URLS) {
print("$$url{'surl'}.value $$url{'time'}\n");
}
foreach my $url (values %URLS) {
print("\nmultigraph http_request_time.$$url{'surl'}\n");
print("$$url{'surl'}.value $$url{'time'}\n");
foreach my $name (keys %URLS) {
my $url = $URLS{$name};
print("$name.value $$url{'time'}\n");
}
foreach my $name (keys %URLS) {
my $url = $URLS{$name};
print("\nmultigraph http_request_time.$name\n");
print("$name.value $$url{'time'}\n");
}
# vim:syntax=perl