munin-contrib/plugins/php/eaccelerator-usage

101 lines
2.2 KiB
Perl
Executable File

#!/usr/bin/perl -w
# -*- perl -*-
=head1 NAME
eacc - Plugin to monitor eAccelerator
=head1 CONFIGURATION EXAMPLE
/etc/munin/plugin-conf.d/eacc or other file in that dir must contain:
[eacc]
env.user admin
env.pass eAccelerator
env.host 127.0.0.1
env.port 80
env.page control.php
=head1 AUTHOR
falselike at gmail dot com
=head1 LICENSE
No license
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
use LWP;
my $host = $ENV{'host'} || '127.0.0.1';
my $port = $ENV{'port'} || 80;
my $page = $ENV{'page'} || 'control.php';
my $user = $ENV{'user'} || 'admin';
my $pass = $ENV{'pass'} || 'eAccelerator';
my $realm = $ENV{'realm'} || 'eAccelerator control panel';
if ($#ARGV eq 0) {
if ($ARGV[0] eq 'autoconf') {
print "yes\n";
exit(0);
}
if ($ARGV[0] eq 'config') {
print "eAccelerator\n";
print "graph_title eAccelerator\n";
print "graph_category webserver\n";
print "memusage.label Memory Usage %\n";
print "memusage.warning 95\n";
print "memusage.critical 95\n";
print "memusage.label Memory Usage MB\n";
print "memmax.label Cache Size MB\n";
print "memused.label Used Memory MB\n";
print "memfree.label Free Memory MB\n";
print "cached.label Scripts Cached\n";
print "removed.label Scripts Removed\n";
print "keys.label Keys Cached\n";
exit();
}
}
my $ua = LWP::UserAgent->new();
$ua->credentials($host . ':' . $port, $realm, $user, $pass);
my $url = 'http://'. $host .':'. $port .'/'. $page;
my $resp = $ua->get($url);
if ($resp->is_success) {
$b = '';
foreach (split '\n', $resp->content) {
if (/([\d\.]+)/) {
$v = $1;
# debug
#print "$b\n$_\n";
print "memmax.value $v\n" if $b =~ /total/i;
if ($b =~ /in use/i) {
print "memused.value $v\n";
if (/([\d+\.]+)\s*%/) {
print "memusage.value $1\n";
}
}
print "memfree.value $v\n" if $b =~ /free/i;
print "cached.value $v\n" if $b =~ /cached/i;
print "removed.value $v\n" if $b =~ /removed/i;
print "keys.value $v\n" if $b =~ /keys/i;
}
$b = $_;
}
} else {
my $ret = $resp->status_line;
die "Authorization failed!\nPlease recheck your credentials:\n\tenv.user $user\n\tenv.pass $pass\n\n" if $ret =~ /401/;
die "Can't get $url -- ", $ret;
}