zenus_ - Munin plugin to monitor the usage of a Zen Internet Broadband account
=head1 APPLICABLE SYSTEMS
Any (Though most likely those connected to a Zen Internet Broadband connection)
=head1 CONFIGURATION
This plugin requires the C<zenus> module to be installed. This can be fetched
from L<http://www.rachaelandtom.info/zenus>.
Tip: To see if it's already setup correctly, just run this plugin
with the parameter 'autoconf'. If you get a "yes", everything should
work like a charm already.
This configuration section shows the defaults of the plugin:
[zenus_*]
env.user
env.pass
env.account
env.tick 60
You must supply C<env.user> and C<env.pass>. These will be your PORTAL username and password, NOT your ADSL account details.
You may either specify the account to report through C<env.account> (e.g. zen12345@zen) or by naming the symlink in your plugins directory (e.g. zenus_zen12345_zen). If no account is specified, the default account will be chosen.
C<env.tick> specifies how often (in minutes) the data will be refreshed from upstream. This is to avoid hitting the Zen servers every five minutes. Data is cached between runs.
=head1 INTERPRETATION
The plugin shows the amount of data downloaded and uploaded since the beginning of the chargable period (i.e. the calendar month). A thick line shows the current download allowance (planned plus banked). A thinner line shows the estimated amount remaining at the end of the month. If you are estimated to exceed your allowance before the end of the month, a second line appears showing the rate at which you're downloading beyond the sustainable rate.
Warnings are sent if your estimated allowance drops below 25% of your cap and if the overspeed rate rises above zero. Critical warnings are sent if your estimated allowance drops below 10% of your cap.
=head1 MAGIC MARKERS
#%# family=auto contrib
#%# capabilities=autoconf suggest
=head1 AUTHOR
Paul Saunders L<darac@darac.org.uk>
=cut
use strict;
use warnings;
use lib $ENV{'MUNIN_LIBDIR'};
use Munin::Plugin;
use Data::Dump qw(pp);
use Time::Local;
my $ret = undef;
# Load modules like so
if ( !eval "require zenus;" ) {
$ret =
"Could not load zenus. Get it from http://www.rachaelandtom.info/zenus\n";