2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/apache/apache_activity
Lars Kruse 17f784270a Whitespace cleanup
* remove trailing whitespace
* remove empty lines at the end of files
2018-08-02 02:33:25 +02:00

99 lines
2.6 KiB
Perl
Executable File

#!/usr/bin/perl
#
# Parameters supported:
#
# config
# autoconf
#
# Configurable variables
#
# url - Override default status-url
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
my $ret = undef;
if (!eval "require LWP::UserAgent;") {
$ret = "LWP::UserAgent not found";
}
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto";
my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (80);
my %chars = (
# '\_' => 'Waiting',
# 'S' => 'Starting up',
'R' => 'Reading request',
'W' => 'Sending reply',
'K' => 'Keepalive',
'D' => 'DNS lookup',
'C' => 'Closing',
# 'L' => 'Logging',
# 'G' => 'Gracefully finishing',
# 'I' => 'Idle cleanup',
# '\.' => 'Open slot',
);
# "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
# "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
# "C" Closing connection, "L" Logging, "G" Gracefully finishing,
# "I" Idle cleanup of worker, "." Open slot with no current process
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 and $response->content =~ /Scoreboard/im;
}
if (@badports) {
print "no (no apache server-status on ports @badports)\n";
exit 1;
} else {
print "yes\n";
exit 0;
}
}
if (exists $ARGV[0] and $ARGV[0] eq "config") {
print "graph_title Apache activity\n";
print "graph_args --base 1000 -l 0\n";
print "graph_category webserver\n";
print "graph_vlabel processes\n";
foreach my $port (@PORTS) {
while (my ($char, $val) = each (%chars)) {
$char =~ s/\\\./dot/;
$char =~ s/\\\_/underline/;
print "activity_${port}_${char}.label ";
print $val, "\n";
print "activity_${port}_${char}.type GAUGE\n";
}
}
exit 0;
}
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));
if ($response->content =~ /^Scoreboard\:\s?(.*)$/sm) {
my $string = $1;
chomp $string;
my @act = split (//, $string);
foreach my $char (keys (%chars)) {
my $num = scalar (grep (/$char/, @act));
$char =~ s/\\\./dot/;
$char =~ s/\\\_/underline/;
print "activity_${port}_${char}.value $num\n";
}
}
}