contrib-munin/plugins/apache/apache_blackbox

85 lines
1.8 KiB
Perl
Executable File

#!/usr/bin/perl
#
# apache http status code monitoring
#
# luis peralta - luis@11870.com
# http://www.ziritione.org
#
# Installing: configure apache blackbox and set the logfile to /var/log/blackbox.log
# or change the BLACKBOXLOG setting below.
#
# Dependencies: apache mod_logio, apache blackbox
# http://www.devco.net/archives/2008/03/05/detailed_apache_stats.php
#
# Last version available at: http://www.ziritione.org/http_status
#
# Parameters:
#
# config
# autoconf
#
#%# family=auto
#%# capabilities=autoconf
use strict;
my $BLACKBOXLOG = "/var/log/blackbox.log";
my %WANTED = ( "apache.status.200" => "_200",
"apache.status.301" => "_301",
"apache.status.302" => "_302",
"apache.status.404" => "_404",
"apache.status.5xx" => "_5xx",
);
my $arg = shift();
if ($arg eq 'config') {
print_config();
exit();
} elsif ($arg eq 'autoconf') {
print "yes\n";
exit();
}
open(SERVICE, "<$BLACKBOXLOG")
or die("Could not open '$BLACKBOXLOG': $!");
while (<SERVICE>) {
my ($k, $v) = (m/(apache.status.*)=(\d+)/);
next unless ($k);
if (exists $WANTED{$k} ) {
print("$WANTED{$k}.value $v\n");
}
}
close(SERVICE);
sub print_config {
my $num = 0;
print("graph_title HTTP requests status
graph_args --base 1000
graph_vlabel requests / second
graph_category webserver
graph_total total\n");
for my $key (sort { $WANTED{$a} cmp $WANTED{$b} } (keys %WANTED)) {
my $title = $WANTED{$key};
print("$title.label ${title}\n",
"$title.min 0\n",
"$title.type DERIVE\n",
"$title.max 500000\n",
#"$title.draw ", ($num) ? "STACK" : "AREA" , "\n",
"$title.draw ", ($num) ? "AREA" : "AREA" , "\n",
);
$num++;
}
}