mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
163 lines
4.4 KiB
Perl
Executable File
163 lines
4.4 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
#
|
|
# Plugin to monior the Wua.la Linux client
|
|
# for shared, social storage from http://wua.la.
|
|
#
|
|
# Author: Dominik Schulz <lkml@ds.gauner.org>
|
|
# URL: http://developer.gauner.org/munin/
|
|
#
|
|
# Configuration:
|
|
#
|
|
# Set env.wualadir <yourpathtowuala>, e.g. /home/fred/wuala
|
|
# and user fred. Please note, that if you don't run this
|
|
# plugin as the correct user it won't work, since the
|
|
# wualacmd command will only work when running as the correct user.
|
|
#
|
|
# The Plugin tries to detect if wuala is running and will
|
|
# report unknown (U) as values if it is not running.
|
|
#
|
|
# This is a dual-personality plugin. If the file- or
|
|
# softlink-name of this plugin ends in _storage it will report
|
|
# the storage values and if it ends in _uptime it will report the
|
|
# uptime.
|
|
#
|
|
# Example Configuration:
|
|
#
|
|
# [wuala*]
|
|
# user fred
|
|
# env.wualadir /home/fred/wuala
|
|
#
|
|
# Parameters:
|
|
#
|
|
# config (required)
|
|
#
|
|
my $wualadir = $ENV{wualadir};
|
|
|
|
if ($ARGV[0] and $ARGV[0] eq "autoconf")
|
|
{
|
|
print "no\n";
|
|
exit 1;
|
|
} elsif ($ARGV[0] and $ARGV[0] eq "config")
|
|
{
|
|
if($0 =~ /.*_uptime/) {
|
|
print "graph_args -l0 --vertical-label %\n";
|
|
print "graph_title Wuala Uptime\n";
|
|
print "graph_category wuala\n";
|
|
print "graph_info This graph shows the Wua.la uptime\n";
|
|
print "uptime.label Uptime\n";
|
|
print "uptime.draw LINE2\n";
|
|
print "uptime.info Uptime of the Wua.la Client on this computer.\n";
|
|
} elsif($0 =~ /.*_storage/) {
|
|
print "graph_args --base 1024 -l 0 --vertical-label GB\n";
|
|
print "graph_title Wuala Storage\n";
|
|
print "graph_category wuala\n";
|
|
print "graph_info This graph shows several storage related statistics of Wua.la.\n";
|
|
print "limit.label Local Storage Limit\n";
|
|
print "limit.draw LINE2\n";
|
|
print "limit.info Local shared storage.\n";
|
|
print "earned.label Local Earned Storage\n";
|
|
print "earned.draw LINE2\n";
|
|
print "earned.info Sum of local earned storage.\n";
|
|
print "local.label Remote earned storage.\n";
|
|
print "local.draw LINE1\n";
|
|
print "local.info Storage earned on other nodes.\n";
|
|
print "quota.label Sum of available storage.\n";
|
|
print "quota.draw LINE2\n";
|
|
print "quota.info The sum of the available storage.\n";
|
|
print "used.label Used storage.\n";
|
|
print "used.draw LINE2\n";
|
|
print "used.info The amount of free storage.\n";
|
|
}
|
|
} else {
|
|
if($0 =~ /.*_uptime/) {
|
|
get_uptime();
|
|
} elsif($0 =~ /.*_storage/) {
|
|
get_storage();
|
|
}
|
|
}
|
|
# Report the wua.la storage
|
|
# values.
|
|
sub get_storage
|
|
{
|
|
my $limit = U;
|
|
my $earned = U;
|
|
my $localStored = U;
|
|
my $quota = U;
|
|
my $used = U;
|
|
if(is_running()) {
|
|
chdir($wualadir);
|
|
open(WUALA, "$wualadir/wualacmd tradeStats |");
|
|
while(my $line = <WUALA>) {
|
|
#print "D: ".$line;
|
|
if ($line =~ /Current limit/) {
|
|
$line =~ s/Current limit: ([0-9]*.?[0-9]*) GB/$1/i;
|
|
$limit = trim($line);
|
|
#print "Current limit: ".$limit."\n";
|
|
} elsif ($line =~ /Earned storage:/) {
|
|
$line =~ s/Earned storage: ([0-9]*.?[0-9]*) GB/$1/i;
|
|
$earned = trim($line);
|
|
#print "Earned: ".$earned."\n";
|
|
} elsif ($line =~ /Locally stored data/) {
|
|
$line =~ s/Locally stored data .*: ([0-9]*.?[0-9]*) GB/$1/i;
|
|
$localStored = trim($line);
|
|
#print "Local data: ".$localStored."\n";
|
|
}
|
|
}
|
|
close(WUALA);
|
|
open(WUALA, "$wualadir/wualacmd showQuota |");
|
|
while(my $line = <WUALA>) {
|
|
#print "D: ".$line;
|
|
if($line =~ /Quota:/) {
|
|
$line =~ s/Quota: ([0-9]*.[0-9]*) GB/$1/i;
|
|
$quota = trim($line);
|
|
#print "Quota: ".$quota."\n";
|
|
} elsif ($line =~ /List use/) {
|
|
$line =~ s/List use: ([0-9]*.?[0-9]*) GB/$1/i;
|
|
$used = trim($line);
|
|
#print "Used: $used\n";
|
|
}
|
|
}
|
|
close(WUALA);
|
|
}
|
|
print "limit.value $limit\n";
|
|
print "earned.value $earned\n";
|
|
print "local.value $localStored\n";
|
|
print "quota.value $quota\n";
|
|
print "used.value $used\n";
|
|
}
|
|
# Return the wua.la uptime in percent of day.
|
|
sub get_uptime
|
|
{
|
|
my $uptime = U;
|
|
if(is_running()) {
|
|
chdir($wualadir);
|
|
open(WUALA, "$wualadir/wualacmd tradeStats |");
|
|
while(my $line = <WUALA>) {
|
|
#print "D: ".$line;
|
|
if($line =~ /Average online time/) {
|
|
$line =~ s/Average online time: ([0-9]*.[0-9]*)%/$1/i;
|
|
$uptime = trim($line);
|
|
}
|
|
}
|
|
close(WUALA);
|
|
}
|
|
print "uptime.value $uptime\n";
|
|
}
|
|
# Determine if wua.la is running.
|
|
sub is_running
|
|
{
|
|
$output = qx(ps aux | grep loader2.jar);
|
|
if($output =~ /java/) {
|
|
return 1;
|
|
}
|
|
}
|
|
# Remove whitespaces (inclduing tabs and newlines) from the
|
|
# given string.
|
|
sub trim
|
|
{
|
|
my $string = shift;
|
|
$string =~ s/^\s+//;
|
|
$string =~ s/\s+$//;
|
|
return $string;
|
|
}
|