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:
commit
29e6559e8b
6 changed files with 385 additions and 27 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue