mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
tomcat access plugin
This commit is contained in:
parent
bcaee8ef9c
commit
e9ce5f9633
116
plugins/tomcat/tomcat_access
Executable file
116
plugins/tomcat/tomcat_access
Executable file
@ -0,0 +1,116 @@
|
||||
#!/usr/bin/perl
|
||||
# -*- perl -*-
|
||||
|
||||
=head1 NAME
|
||||
|
||||
tomcat_access - Plugin to monitor the number of accesses to Tomcat
|
||||
servers.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
The following environment variables are used by this plugin
|
||||
|
||||
timeout - Connection timeout
|
||||
url - Override default status-url
|
||||
ports - HTTP port numbers
|
||||
user - Manager username
|
||||
password - Manager password
|
||||
|
||||
=head1 USAGE
|
||||
|
||||
Requirements:
|
||||
|
||||
Needs access to
|
||||
http://<user>:<password>@localhost:8080/manager/status?XML=true (or
|
||||
modify the address for another host).
|
||||
|
||||
Tomcat 5.0 or higher.
|
||||
|
||||
A munin-user in $CATALINA_HOME/conf/tomcat-users.xml should be set up
|
||||
for this to work.
|
||||
|
||||
Tip: To see if it's already set up correctly, just run this plugin
|
||||
with the parameter "autoconf". If you get a "yes", everything should
|
||||
work like a charm already.
|
||||
|
||||
tomcat-users.xml example:
|
||||
<user username="munin" password="<set this>" roles="standard,manager"/>
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Ricardo Fraile <rikr_@hotmail.com>
|
||||
Rune Nordbøe Skillingstad <runesk@linpro.no>
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
Unknown license
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=manual
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
|
||||
my $ret = undef;
|
||||
|
||||
if(!eval "require LWP::UserAgent;") {
|
||||
$ret = "LWP::UserAgent not found";
|
||||
}
|
||||
|
||||
if(!eval "require XML::Simple;") {
|
||||
$ret .= "XML::Simple not found";
|
||||
}
|
||||
|
||||
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://%s:%s\@127.0.0.1:%d/manager/status?XML=true";
|
||||
my $PORT = exists $ENV{'ports'} ? $ENV{'ports'} : 8080;
|
||||
my $PORTAJP = exists $ENV{'portajp'} ? $ENV{'portajp'} : 8009;
|
||||
my $USER = exists $ENV{'user'} ? $ENV{'user'} : "munin";
|
||||
my $PASSWORD = exists $ENV{'password'} ? $ENV{'password'} : "munin";
|
||||
my $TIMEOUT = exists $ENV{'timeout'} ? $ENV{'timeout'} : 30;
|
||||
|
||||
my $url = sprintf $URL, $USER, $PASSWORD, $PORT;
|
||||
|
||||
if(exists $ARGV[0] and $ARGV[0] eq "autoconf") {
|
||||
if($ret) {
|
||||
print "no ($ret)\n";
|
||||
exit 0;
|
||||
}
|
||||
my $au = LWP::UserAgent->new(timeout => $TIMEOUT);
|
||||
my $repsonse = $au->request(HTTP::Request->new('GET',$url));
|
||||
if($repsonse->is_success and $repsonse->content =~ /<status>.*<\/status>/im) {
|
||||
print "yes\n";
|
||||
exit 0;
|
||||
} else {
|
||||
print "no (no tomcat status)\n";
|
||||
exit 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(exists $ARGV[0] and $ARGV[0] eq "config") {
|
||||
print "graph_title Tomcat accesses\n";
|
||||
print "graph_args --base 1000\n";
|
||||
print "graph_vlabel accesses / \${graph_period}\n";
|
||||
print "graph_category tomcat\n";
|
||||
print "accesses.label Accesses\n";
|
||||
print "accesses.type DERIVE\n";
|
||||
print "accesses.max 1000000\n";
|
||||
print "accesses.min 0\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
my $ua = LWP::UserAgent->new(timeout => $TIMEOUT);
|
||||
my $xs = new XML::Simple;
|
||||
my $response = $ua->request(HTTP::Request->new('GET',$url));
|
||||
my %options = ( KeyAttr => { connector => 'name' }, ForceArray => 1 );
|
||||
my $xml = $xs->XMLin($response->content, %options);
|
||||
|
||||
if($xml->{'connector'}->{"\"".$PORTAJP."\""}->{'requestInfo'}->[0]->{'requestCount'}) {
|
||||
print "accesses.value " . $xml->{'connector'}->{"\"".$PORTAJP."\""}->{'requestInfo'}->[0]->{'requestCount'} . "\n";
|
||||
} else {
|
||||
print "accesses.value U\n";
|
||||
}
|
||||
|
||||
# vim:syntax=perl
|
Loading…
Reference in New Issue
Block a user