mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 22:25:23 +00:00
fixed bug if a dir/filename contains the text total
This commit is contained in:
parent
5332dc60ad
commit
b6c93cc77c
1 changed files with 109 additions and 107 deletions
|
@ -1,107 +1,109 @@
|
|||
#!/usr/bin/perl
|
||||
# -*- perl -*-
|
||||
#
|
||||
# ############################################################################## #
|
||||
#
|
||||
# This munin plugin watches the sizes of the given directories.
|
||||
# @author Kevin Fischer
|
||||
# @version 2010/08/05
|
||||
# @website http://kevin-fischer.de
|
||||
#
|
||||
# Copy this to your node's config file (default: plugin-conf.d/munin-node):
|
||||
# [dirsizes]
|
||||
# user root
|
||||
# env.watchdirs /var/www,/tmp
|
||||
#
|
||||
# Change the env.watchdirs-variable according to your wishes.
|
||||
# DONT FORGET TO RUN AS ROOT!
|
||||
#
|
||||
# You can test this plugin by calling it with params "test" and your watchdirs:
|
||||
# ./dirsizes test /dir1,/tmp/dir2
|
||||
#
|
||||
# ############################################################################## #
|
||||
|
||||
use strict;
|
||||
|
||||
my @watchdirs;
|
||||
|
||||
# Normal mode or test mode?
|
||||
if(exists $ARGV[0] and $ARGV[0] ne "test")
|
||||
{
|
||||
# If no dirs are given, exit.
|
||||
if(! defined($ENV{"watchdirs"}))
|
||||
{
|
||||
die "No directories given! See the manual at top of this plugin file.";
|
||||
}
|
||||
|
||||
# Split the watchdirs string
|
||||
@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?
|
||||
if(exists $ARGV[0] and $ARGV[0] eq "config")
|
||||
{
|
||||
# Munin basic info
|
||||
print "graph_title Directory sizes\n";
|
||||
print "graph_args --base 1024 --lower-limit 0\n";
|
||||
print "graph_vlabel directory size\n";
|
||||
print "graph_info Displays the sizes of all configured directories.\n";
|
||||
print "graph_category disk\n";
|
||||
print "graph_total Total\n";
|
||||
|
||||
# All available directories
|
||||
foreach my $dir (@watchdirs) {
|
||||
# Remove illegal characters
|
||||
my $label = $dir;
|
||||
$label =~ s@[\/-]@_@g;
|
||||
|
||||
# Print name
|
||||
print "dir", $label, ".label ", $dir, "\n";
|
||||
}
|
||||
}
|
||||
# Read request, output the directory sizes
|
||||
else
|
||||
{
|
||||
# All available directories
|
||||
foreach my $dir (@watchdirs) {
|
||||
# Remove illegal characters
|
||||
my $label = $dir;
|
||||
$label =~ s@[\/-]@_@g;
|
||||
|
||||
# Get the dirsize
|
||||
my $dirsize = getSize($dir);
|
||||
|
||||
# Get the label
|
||||
my $label = niceLabelname($dir);
|
||||
|
||||
# Print name
|
||||
print "dir", $label, ".value ", $dirsize, ".0\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Function: getSize($dir)
|
||||
sub getSize
|
||||
{
|
||||
my($dir) = @_;
|
||||
|
||||
# Get the size via `du`
|
||||
my @dirsize = split(' ', `du -cb $dir | grep "total"`);
|
||||
return @dirsize[0];
|
||||
}
|
||||
# Remove illegal characters
|
||||
sub niceLabelname
|
||||
{
|
||||
my($label) = @_;
|
||||
|
||||
$label =~ s@[\/-]@_@g;
|
||||
return $label;
|
||||
}
|
||||
|
||||
exit 0;
|
||||
#!/usr/bin/perl
|
||||
# -*- perl -*-
|
||||
#
|
||||
#
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# This munin plugin watches the sizes of the given directories.
|
||||
# @author Kevin Fischer
|
||||
# @version 2010/08/05
|
||||
# @website http://kevin-fischer.de
|
||||
#
|
||||
# Copy this to your node's config file (default: plugin-conf.d/munin-node):
|
||||
# [dirsizes]
|
||||
# user root
|
||||
# env.watchdirs /var/www,/tmp
|
||||
#
|
||||
# Change the env.watchdirs-variable according to your wishes.
|
||||
# DONT FORGET TO RUN AS ROOT!
|
||||
#
|
||||
# You can test this plugin by calling it with params "test" and your watchdirs:
|
||||
# ./dirsizes test /dir1,/tmp/dir2
|
||||
#
|
||||
#
|
||||
##############################################################################
|
||||
#
|
||||
|
||||
use strict;
|
||||
my @watchdirs;
|
||||
|
||||
if ( exists $ARGV[0] and $ARGV[0] eq "test" ) {
|
||||
|
||||
# Split the watchdirs string
|
||||
@watchdirs = split( ",", $ARGV[1] );
|
||||
}
|
||||
else {
|
||||
|
||||
# If no dirs are given, exit.
|
||||
if ( !defined( $ENV{"watchdirs"} ) ) {
|
||||
die "No directories given! See the manual at top of this plugin file.";
|
||||
}
|
||||
|
||||
# Split the watchdirs string
|
||||
@watchdirs = split( ",", $ENV{"watchdirs"} );
|
||||
}
|
||||
|
||||
# Config or read request?
|
||||
if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
|
||||
|
||||
# Munin basic info
|
||||
print "graph_title Directory sizes\n";
|
||||
print "graph_args --base 1024 --lower-limit 0\n";
|
||||
print "graph_vlabel directory size\n";
|
||||
print "graph_info Displays the sizes of all configured directories.\n";
|
||||
print "graph_category disk\n";
|
||||
print "graph_total Total\n";
|
||||
|
||||
# All available directories
|
||||
foreach my $dir (@watchdirs) {
|
||||
|
||||
# Remove illegal characters
|
||||
my $label = $dir;
|
||||
$label =~ s@[\/-]@_@g;
|
||||
|
||||
# Print name
|
||||
print "dir", $label, ".label ", $dir, "\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Read request, output the directory sizes
|
||||
else {
|
||||
|
||||
# All available directories
|
||||
foreach my $dir (@watchdirs) {
|
||||
|
||||
# Remove illegal characters
|
||||
my $label = $dir;
|
||||
$label =~ s@[\/-]@_@g;
|
||||
|
||||
# Get the dirsize
|
||||
my $dirsize = getSize($dir);
|
||||
|
||||
# Get the label
|
||||
my $label = niceLabelname($dir);
|
||||
|
||||
# Print name
|
||||
print "dir", $label, ".value ", $dirsize, ".0\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Function: getSize($dir)
|
||||
sub getSize {
|
||||
my ($dir) = @_;
|
||||
|
||||
# Get the size via `du`
|
||||
my @dirsize = split( ' ', `du -cb $dir | grep "total" | tail -1 ` );
|
||||
return @dirsize[0];
|
||||
}
|
||||
|
||||
# Remove illegal characters
|
||||
sub niceLabelname {
|
||||
my ($label) = @_;
|
||||
|
||||
$label =~ s@[\/-]@_@g;
|
||||
return $label;
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue