Projet

Général

Profil

Révision 8b1e467b

ID8b1e467b7cd5ce035a7c163d6fbc2b8faa954fd8
Parent a9ce052b
Enfant 55aa46a3

Ajouté par Chris Wilson il y a environ 13 ans

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.

Voir les différences:

plugins/http/http_request_time
10 10
=head1 CONFIGURATION
11 11

  
12 12
  [http_request_time]
13
     env.url   http://127.0.0.1/1 http://127.0.0.1/2 http://127.0.0.1/3
13
  env.url   http://127.0.0.1/1
14
  env.url2  http://127.0.0.1/2
15
  env.url3  http://www.example.com
16
  env.url3_name  some_munin_internal_name
17
  env.url3_label Some random page on our website
18
  env.url3_proxy http://firewall:3128
14 19

  
15 20
=head1 MAGIC MARKERS
16 21

  
......
41 46
	return $surl;
42 47
};
43 48

  
44

  
45 49
if (! eval "require LWP::UserAgent;")
46 50
{
47 51
	$ret = "LWP::UserAgent not found";
......
50 54
        }
51 55
}
52 56

  
53
my $URL = $ENV{'url'}?$ENV{'url'}:"http://127.0.0.1/";
54 57
my %URLS;
55
foreach $_ (split(/ /,$URL)){
56
	$URLS{$_}={
57
		url=>$_,
58
		surl=>clean($_),
58

  
59
for (my $i = 1; $ENV{"url$i"}; $i++)
60
{
61
	my $url   = $ENV{"url$i"};
62
	my $proxy = $ENV{"url${i}_proxy"};
63
	my $name  = $ENV{"url${i}_name"}  || clean($url);
64
	my $label = $ENV{"url${i}_label"} || $url;
65
	
66
	$URLS{$name}={
67
		url=>$url,
68
		proxy=>$proxy,
69
		label=>$label,
59 70
		time=>'U'
60 71
	};
61 72
}
......
94 105
	print "graph_category other\n";
95 106

  
96 107
	my @go;
97
	foreach my $url (values %URLS) {
98
		print "$$url{'surl'}.label $$url{'url'}\n";
99
		print "$$url{'surl'}.info The response time of a single request\n";
100
		print "$$url{'surl'}.min 0\n";
101
		print "$$url{'surl'}.draw LINE1\n";
102
		push(@go,$$url{'surl'});
108
	foreach my $name (keys %URLS) {
109
		my $url = $URLS{$name};
110
		print "$name.label $$url{'label'}\n";
111
		print "$name.info The response time of a single request\n";
112
		print "$name.min 0\n";
113
		print "$name.draw LINE1\n";
114
		push(@go, $name);
103 115
	}
104 116

  
105 117
	# multigraphs
106 118

  
107
	foreach my $url (values %URLS) {
108
		print "\nmultigraph http_request_time.$$url{'surl'}\n";
119
	foreach my $name (keys %URLS) {
120
		my $url = $URLS{$name};
121
		print "\nmultigraph http_request_time.$name\n";
109 122
		print "graph_title $$url{'url'}\n";
110 123
		print "graph_args --base 1000\n";
111 124
		print "graph_vlabel response time in ms\n";
112 125
		print "graph_category other\n";
113
		print "$$url{'surl'}.label $$url{'url'}\n";
114
		print "$$url{'surl'}.info The response time of a single request\n";
115
		print "$$url{'surl'}.min 0\n";
116
		print "$$url{'surl'}.draw LINE1\n";
126
		print "$name.label $$url{'label'}\n";
127
		print "$name.info The response time of a single request\n";
128
		print "$name.min 0\n";
129
		print "$name.draw LINE1\n";
117 130
	}
118 131

  
119 132
	exit 0;
120 133
}
121 134

  
122 135
my $ua = LWP::UserAgent->new(timeout => 15);
136
foreach my $name (keys %URLS) {
137
	my $url = $URLS{$name};
123 138

  
124
foreach my $url (values %URLS) {
125
	my $t1=[gettimeofday];
139
	if ($url->{proxy}) {
140
		$ua->proxy(['http', 'ftp'], $url->{proxy});
141
	}
142
	else {
143
		$ua->proxy(['http', 'ftp'], undef);
144
	}
145

  
146
	# warm up
126 147
	my $response = $ua->request(HTTP::Request->new('GET',$$url{'url'}));
148

  
149
	# timed run
150
	my $t1=[gettimeofday];
151
	$response = $ua->request(HTTP::Request->new('GET',$$url{'url'}));
127 152
	my $t2=[gettimeofday];
153

  
128 154
	if ($response->is_success) {
129 155
		$$url{'time'}=sprintf("%d",tv_interval($t1,$t2)*1000);
130 156
	};		
131 157
};
132 158

  
133 159
print("multigraph http_request_time\n");
134
foreach my $url (values %URLS) {
135
	print("$$url{'surl'}.value $$url{'time'}\n");
136
}
137
foreach my $url (values %URLS) {
138
	print("\nmultigraph http_request_time.$$url{'surl'}\n");
139
	print("$$url{'surl'}.value $$url{'time'}\n");
160
foreach my $name (keys %URLS) {
161
	my $url = $URLS{$name};
162
	print("$name.value $$url{'time'}\n");
140 163
}
141 164

  
165
foreach my $name (keys %URLS) {
166
	my $url = $URLS{$name};
167
	print("\nmultigraph http_request_time.$name\n");
168
	print("$name.value $$url{'time'}\n");
169
}
142 170

  
143 171
# vim:syntax=perl

Formats disponibles : Unified diff