From 0417d4765b66a73d762422b24b5bbfdfa252fa5b Mon Sep 17 00:00:00 2001 From: Ropchan Sergey Date: Wed, 23 Feb 2011 17:11:32 +0100 Subject: [PATCH] Initial version --- plugins/other/lustre_df | 86 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 plugins/other/lustre_df diff --git a/plugins/other/lustre_df b/plugins/other/lustre_df new file mode 100755 index 00000000..27cb8397 --- /dev/null +++ b/plugins/other/lustre_df @@ -0,0 +1,86 @@ +#!/usr/bin/perl +# -*- perl -*- + +=head1 NAME + +lustre_df - Plugin to monitor Lustre 1.8.x (cluster FS) storage objects MDT,OST's +usage in percents + +=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 AUTHOR + +Ropchan Sergey + +=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 -h`; + +&print_values; + +if ($ARGV[0] and $ARGV[0] eq "config") { + print "graph_title Lustre cluster storage objects usage\n"; + print "graph_args --base 1000\n"; + print "graph_vlabel % usage\n"; + print "graph_scale no\n"; + print "graph_category lustre\n"; + + &print_labels; + + exit 0; +} + +sub print_labels { + for $_ (@output) { + #storage objects + if (/^\S+\s+\S+\s+\S+\s+\S+\s+(\d+)\%\s+\S+\[(.*)\:(\d+)\]/i) { + my $name = $2.$3; + print $name.".label ", $name, "\n"; + print $name.".min 0\n"; + print_thresholds($name,undef,undef,99,100); + } + } + print "summary.label summary", "\n"; + print "summary.min 0\n"; + print_thresholds("summary",undef,undef,95,98); +} + +sub print_values { + for $_ (@output) { + #storage objects + if (/^\S+\s+\S+\s+\S+\s+\S+\s+(\d+)\%\s+\S+\[(.*)\:(\d+)\]/i) { + my $name = $2.$3; + print $name.".value ", $1, "\n"; + } + + #summanary info + if (/^filesystem summary\:\s+\S+\s+\S+\s+\S+\s+(\d+)\%\s+\S+\s/i) { + print "summary.value ", $1, "\n"; + } + } +} +