1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-09-19 00:53:19 +00:00

fixed bug if a dir/filename contains the text total

This commit is contained in:
ian dobson 2011-06-23 21:08:31 +02:00 committed by Steve Schnepp
parent 5332dc60ad
commit b6c93cc77c

View file

@ -1,7 +1,9 @@
#!/usr/bin/perl #!/usr/bin/perl
# -*- perl -*- # -*- perl -*-
# #
# ############################################################################## # #
##############################################################################
#
# #
# This munin plugin watches the sizes of the given directories. # This munin plugin watches the sizes of the given directories.
# @author Kevin Fischer # @author Kevin Fischer
@ -19,34 +21,32 @@
# You can test this plugin by calling it with params "test" and your watchdirs: # You can test this plugin by calling it with params "test" and your watchdirs:
# ./dirsizes test /dir1,/tmp/dir2 # ./dirsizes test /dir1,/tmp/dir2
# #
# ############################################################################## # #
##############################################################################
#
use strict; use strict;
my @watchdirs; my @watchdirs;
# Normal mode or test mode? if ( exists $ARGV[0] and $ARGV[0] eq "test" ) {
if(exists $ARGV[0] and $ARGV[0] ne "test")
{ # Split the watchdirs string
@watchdirs = split( ",", $ARGV[1] );
}
else {
# If no dirs are given, exit. # If no dirs are given, exit.
if(! defined($ENV{"watchdirs"})) if ( !defined( $ENV{"watchdirs"} ) ) {
{
die "No directories given! See the manual at top of this plugin file."; die "No directories given! See the manual at top of this plugin file.";
} }
# Split the watchdirs string # Split the watchdirs string
@watchdirs = split( ",", $ENV{"watchdirs"} ); @watchdirs = split( ",", $ENV{"watchdirs"} );
} }
# Test mode
elsif(exists $ARGV[0] and $ARGV[0] eq "test")
{
# Split the watchdirs string
@watchdirs = split(",", $ARGV[1]);
}
# Config or read request? # Config or read request?
if(exists $ARGV[0] and $ARGV[0] eq "config") if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
{
# Munin basic info # Munin basic info
print "graph_title Directory sizes\n"; print "graph_title Directory sizes\n";
print "graph_args --base 1024 --lower-limit 0\n"; print "graph_args --base 1024 --lower-limit 0\n";
@ -57,6 +57,7 @@ if(exists $ARGV[0] and $ARGV[0] eq "config")
# All available directories # All available directories
foreach my $dir (@watchdirs) { foreach my $dir (@watchdirs) {
# Remove illegal characters # Remove illegal characters
my $label = $dir; my $label = $dir;
$label =~ s@[\/-]@_@g; $label =~ s@[\/-]@_@g;
@ -65,11 +66,13 @@ if(exists $ARGV[0] and $ARGV[0] eq "config")
print "dir", $label, ".label ", $dir, "\n"; print "dir", $label, ".label ", $dir, "\n";
} }
} }
# Read request, output the directory sizes # Read request, output the directory sizes
else else {
{
# All available directories # All available directories
foreach my $dir (@watchdirs) { foreach my $dir (@watchdirs) {
# Remove illegal characters # Remove illegal characters
my $label = $dir; my $label = $dir;
$label =~ s@[\/-]@_@g; $label =~ s@[\/-]@_@g;
@ -85,19 +88,17 @@ else
} }
} }
# Function: getSize($dir) # Function: getSize($dir)
sub getSize sub getSize {
{
my ($dir) = @_; my ($dir) = @_;
# Get the size via `du` # Get the size via `du`
my @dirsize = split(' ', `du -cb $dir | grep "total"`); my @dirsize = split( ' ', `du -cb $dir | grep "total" | tail -1 ` );
return @dirsize[0]; return @dirsize[0];
} }
# Remove illegal characters # Remove illegal characters
sub niceLabelname sub niceLabelname {
{
my ($label) = @_; my ($label) = @_;
$label =~ s@[\/-]@_@g; $label =~ s@[\/-]@_@g;
@ -105,3 +106,4 @@ sub niceLabelname
} }
exit 0; exit 0;