- 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";
}
}
}