mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
8813d21ad4
commit
8b6dfd0b14
126
plugins/other/apache_watch_
Executable file
126
plugins/other/apache_watch_
Executable file
@ -0,0 +1,126 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Parameters supported:
|
||||
#
|
||||
# config
|
||||
# autoconf
|
||||
#
|
||||
# Configurable variables
|
||||
#
|
||||
# url - Override default status-url
|
||||
#
|
||||
# Must be symlinked to what the graph should monitor. Run with --suggest
|
||||
# to see valid targets - or just run munin-node-configure --shell
|
||||
#
|
||||
# Written by Bjørn Ruberg 2006-2007
|
||||
#
|
||||
# Magic markers:
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf suggest
|
||||
|
||||
my $ret = undef;
|
||||
if (!eval "require LWP::UserAgent;") {
|
||||
$ret = "LWP::UserAgent not found";
|
||||
}
|
||||
|
||||
# watch-list exists on localhost
|
||||
# watch-info does not
|
||||
|
||||
my %plugs = (
|
||||
'bytes' => 'Input/output (bytes)',
|
||||
'requests' => 'Requests',
|
||||
'documents' => 'Documents served',
|
||||
);
|
||||
|
||||
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://localhost:%d/watch-list";
|
||||
my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (80);
|
||||
my $type = "throughput";
|
||||
|
||||
if (exists $ARGV[0] and $ARGV[0] eq "autoconf") {
|
||||
if ($ret) {
|
||||
print "no ($ret)\n";
|
||||
exit 1;
|
||||
}
|
||||
my $ua = LWP::UserAgent->new (timeout => 30);
|
||||
my @badports;
|
||||
|
||||
foreach my $port (@PORTS) {
|
||||
my $url = sprintf $URL, $port;
|
||||
my $response = $ua->request (HTTP::Request->new('GET', $url));
|
||||
push @badports, $port unless $response->is_success;
|
||||
}
|
||||
|
||||
if (@badports) {
|
||||
print "no (no mod_watch exists on ports @badports)\n";
|
||||
exit 1;
|
||||
} else {
|
||||
print "yes\n";
|
||||
exit 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (exists $ARGV[0] and $ARGV[0] eq "suggest") {
|
||||
while (my ($key, undef) = each %plugs) {
|
||||
print "$key\n";
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
my @servers = ();
|
||||
my @data;
|
||||
foreach my $port (@PORTS) {
|
||||
my $ua = LWP::UserAgent->new (timeout => 30);
|
||||
my $url = sprintf $URL, $port;
|
||||
my $response = $ua->request (HTTP::Request->new ('GET', $url));
|
||||
foreach my $string (split (/\n/, $response->content)) {
|
||||
my ($server, undef, $ifInOctets, $ifOutOctets, $ifRequests,
|
||||
$ifDocuments) = split (/\s/, $string, 6);
|
||||
push @servers, $server unless $server eq "SERVER";
|
||||
push @data, "$server $ifInOctets $ifOutOctets $ifRequests $ifDocuments"
|
||||
unless $server eq "SERVER";
|
||||
}
|
||||
}
|
||||
|
||||
# From here and out, the plugin must be run with a symlinked service.
|
||||
my $check = join ("|", keys %plugs);
|
||||
die ("Plugin must be symlinked to aspect to be monitored")
|
||||
unless $0 =~ /\_($check)$/;
|
||||
|
||||
my $action = $1;
|
||||
|
||||
if (exists $ARGV[0] and $ARGV[0] eq "config") {
|
||||
print "graph_title Apache $plugs{$action}\n";
|
||||
print "graph_args --base 1000 -l 0\n";
|
||||
print "graph_category apache\n";
|
||||
print "graph_vlabel activity\n";
|
||||
my $i = 0;
|
||||
foreach my $server (sort (@servers)) {
|
||||
(my $txtserver = $server) =~ s/(-|\.)/\_/g;
|
||||
my $draw = ($i==0) ? 'AREA' : 'STACK';
|
||||
if ($action eq "bytes") {
|
||||
print "${txtserver}.label $server\n";
|
||||
print "${txtserver}.draw $draw\n";
|
||||
print "${txtserver}.type COUNTER\n";
|
||||
} else {
|
||||
print "${txtserver}.label $server\n";
|
||||
print "${txtserver}.draw $draw\n";
|
||||
print "${txtserver}.type COUNTER\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
foreach my $string (sort (@data)) {
|
||||
my ($server, $ifInOctets, $ifOutOctets, $ifRequests, $ifDocuments) =
|
||||
split (/\s/, $string);
|
||||
(my $txtserver = $server) =~ s/(-|\.)/\_/g;
|
||||
if ($action eq "documents") {
|
||||
print "${txtserver}.value $ifDocuments\n";
|
||||
} elsif ($action eq "requests") {
|
||||
print "${txtserver}.value $ifRequests\n";
|
||||
} elsif ($action eq "bytes") {
|
||||
print "${txtserver}.value " . ($ifInOctets + $ifOutOctets) . "\n";
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user