mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 14:16:00 +00:00
Improve the HTTP plugin by allowing configuring a proxy and friendly name per URL.
Note that the configuration file syntax has changed. You need one "url" variable per URL now, numbered starting with 1, e.g. url1, url2, url3. Each one can be configured by suffixing its variable, e.g. url1_proxy, url2_proxy, etc.
This commit is contained in:
parent
a9ce052bff
commit
8b1e467b7c
1 changed files with 55 additions and 27 deletions
|
@ -10,7 +10,12 @@
|
||||||
=head1 CONFIGURATION
|
=head1 CONFIGURATION
|
||||||
|
|
||||||
[http_request_time]
|
[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
|
=head1 MAGIC MARKERS
|
||||||
|
|
||||||
|
@ -41,7 +46,6 @@ sub clean {
|
||||||
return $surl;
|
return $surl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (! eval "require LWP::UserAgent;")
|
if (! eval "require LWP::UserAgent;")
|
||||||
{
|
{
|
||||||
$ret = "LWP::UserAgent not found";
|
$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;
|
my %URLS;
|
||||||
foreach $_ (split(/ /,$URL)){
|
|
||||||
$URLS{$_}={
|
for (my $i = 1; $ENV{"url$i"}; $i++)
|
||||||
url=>$_,
|
{
|
||||||
surl=>clean($_),
|
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'
|
time=>'U'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -94,50 +105,67 @@ if ( defined $ARGV[0] and $ARGV[0] eq "config" )
|
||||||
print "graph_category other\n";
|
print "graph_category other\n";
|
||||||
|
|
||||||
my @go;
|
my @go;
|
||||||
foreach my $url (values %URLS) {
|
foreach my $name (keys %URLS) {
|
||||||
print "$$url{'surl'}.label $$url{'url'}\n";
|
my $url = $URLS{$name};
|
||||||
print "$$url{'surl'}.info The response time of a single request\n";
|
print "$name.label $$url{'label'}\n";
|
||||||
print "$$url{'surl'}.min 0\n";
|
print "$name.info The response time of a single request\n";
|
||||||
print "$$url{'surl'}.draw LINE1\n";
|
print "$name.min 0\n";
|
||||||
push(@go,$$url{'surl'});
|
print "$name.draw LINE1\n";
|
||||||
|
push(@go, $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
# multigraphs
|
# multigraphs
|
||||||
|
|
||||||
foreach my $url (values %URLS) {
|
foreach my $name (keys %URLS) {
|
||||||
print "\nmultigraph http_request_time.$$url{'surl'}\n";
|
my $url = $URLS{$name};
|
||||||
|
print "\nmultigraph http_request_time.$name\n";
|
||||||
print "graph_title $$url{'url'}\n";
|
print "graph_title $$url{'url'}\n";
|
||||||
print "graph_args --base 1000\n";
|
print "graph_args --base 1000\n";
|
||||||
print "graph_vlabel response time in ms\n";
|
print "graph_vlabel response time in ms\n";
|
||||||
print "graph_category other\n";
|
print "graph_category other\n";
|
||||||
print "$$url{'surl'}.label $$url{'url'}\n";
|
print "$name.label $$url{'label'}\n";
|
||||||
print "$$url{'surl'}.info The response time of a single request\n";
|
print "$name.info The response time of a single request\n";
|
||||||
print "$$url{'surl'}.min 0\n";
|
print "$name.min 0\n";
|
||||||
print "$$url{'surl'}.draw LINE1\n";
|
print "$name.draw LINE1\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
exit 0;
|
exit 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $ua = LWP::UserAgent->new(timeout => 15);
|
my $ua = LWP::UserAgent->new(timeout => 15);
|
||||||
|
foreach my $name (keys %URLS) {
|
||||||
|
my $url = $URLS{$name};
|
||||||
|
|
||||||
foreach my $url (values %URLS) {
|
if ($url->{proxy}) {
|
||||||
my $t1=[gettimeofday];
|
$ua->proxy(['http', 'ftp'], $url->{proxy});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$ua->proxy(['http', 'ftp'], undef);
|
||||||
|
}
|
||||||
|
|
||||||
|
# warm up
|
||||||
my $response = $ua->request(HTTP::Request->new('GET',$$url{'url'}));
|
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];
|
my $t2=[gettimeofday];
|
||||||
|
|
||||||
if ($response->is_success) {
|
if ($response->is_success) {
|
||||||
$$url{'time'}=sprintf("%d",tv_interval($t1,$t2)*1000);
|
$$url{'time'}=sprintf("%d",tv_interval($t1,$t2)*1000);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
print("multigraph http_request_time\n");
|
print("multigraph http_request_time\n");
|
||||||
foreach my $url (values %URLS) {
|
foreach my $name (keys %URLS) {
|
||||||
print("$$url{'surl'}.value $$url{'time'}\n");
|
my $url = $URLS{$name};
|
||||||
}
|
print("$name.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("\nmultigraph http_request_time.$name\n");
|
||||||
|
print("$name.value $$url{'time'}\n");
|
||||||
|
}
|
||||||
|
|
||||||
# vim:syntax=perl
|
# vim:syntax=perl
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue