Repository
Munin (contrib)
Last change
2018-08-02
Graph Categories
Keywords
Language
Perl
License
GPL-2.0-only
Authors

lustre_df_absfree

Name

lustre_df_free - Plugin to monitor Lustre 1.8.x (cluster FS) storage objects MDT,OST’s free space in TB and/or G

Configuration

Path to lfs binary. Configuration is done through $lfs_bin variable, for example by default $lfs_bin = “/usr/bin/lfs”, see below.

Notes

Monitoring node - lustre client with mounted lustre

Version

$Id: lustre_df_free,v 1.3 2011/03/01 10:39:58 fenix Exp $

Author

Ropchan Sergey fenix.serega@gmail.com

License

GPLv2

#!/usr/bin/perl
# -*- perl -*-

=head1 NAME

lustre_df_free - Plugin to monitor Lustre 1.8.x (cluster FS) storage objects MDT,OST's
free space in TB and/or G

=head1 CONFIGURATION
Path to lfs binary. Configuration is done through $lfs_bin variable, for example
by default $lfs_bin = "/usr/bin/lfs", see below.

=head1 NOTES

Monitoring node - lustre client with mounted lustre

=head1 VERSION

  $Id: lustre_df_free,v 1.3 2011/03/01 10:39:58 fenix Exp $

=head1 AUTHOR

Ropchan Sergey <fenix.serega@gmail.com>

=head1 LICENSE

GPLv2

=cut


use Munin::Plugin;

my $lfs_bin = "/usr/bin/lfs";

if ($ARGV[0] and $ARGV[0] eq "autoconf") {
    if (-r $lfs_bin) {
	print "yes\n";
	exit 0;
    } else {
	print "no ($lfs_bin found)\n";
	exit 0;
    }
}

my @output = `$lfs_bin df`;

if ($ARGV[0] and $ARGV[0] eq "config") {
    print "graph_title Lustre cluster storage objects free space in TB\n";
    print "graph_args --base 1024 --lower-limit 0\n";
    print "graph_vlabel TB\n";
    print "graph_category fs\n";

    &print_labels;

    exit 0;
}

&print_values;

sub print_labels {
    for $_ (@output) {
	#storage objects
        if (/^\S+\s+\d+\s+\d+\s+(\d)+\s+\d+\%\s+\S+\[(.*)\:(\d+)\]/i) {
		my $name = $2.$3;
                print $name.".label ", $name, "\n";
	        print $name.".min 0\n";
		print $name.".cdef ", $name,",1024,*\n";
	}

    }
                print "summary.label summary", "\n";
                print "summary.min 0\n";
		print "summary.cdef summary,1024,*\n";

                print "total.label total", "\n";
                print "total.min 0\n";
                print "total.cdef total,1024,*\n";
}

sub print_values {
    for $_ (@output) {
	#storage objects
	if (/^\S+\s+\d+\s+\d+\s+(\d+)\s+\d+\%\s+\S+\[(.*)\:(\d+)\]/i) {
		my $name = $2.$3;
		print $name.".value ", $1, "\n";
        }

	#summanary info
	if (/^filesystem summary\:\s+(\d+)\s+\d+\s+(\d+)\s+\d+\%\s+\S+\s/i) {
		print "summary.value ", $2, "\n";
		print "total.value ", $1, "\n";
	}
    }
}