#!/usr/bin/perl #BEGIN { push @INC, '/usr/local/tc-scripts/lustrestats' } use lib '/usr/local/tc-scripts/lustrestats'; use strict; use Switch; use warnings; use Lustrestats qw(parse_stats parse_single parse_exportstats); my $i; my $namespace="lustre"; my $lustre_type="oss"; #or oss, or client, or router my $server_name=`hostname`; chomp $server_name; my @stat_dump = `/usr/sbin/lctl get_param obdfilter.*.stats`; my $formatted_stats = parse_stats(\@stat_dump); $i=1; print("0 lustrestats "); foreach my $line (@$formatted_stats) { #only need this for the first line. if ($i != 1) { print "|"; } my @linearray = split (" ",$line); print("$linearray[0].operation.$linearray[1]=$linearray[2]"); $i = $i + 1; } my @usage = ("filesfree", "filestotal", "kbytestotal", "kbytesfree"); foreach my $metric (@usage) { my @single_dump = `/usr/sbin/lctl get_param osd-*.*OST*.$metric`; my $singleformatted = parse_single(\@single_dump); foreach my $line (@$singleformatted) { print "|"; my @linearray = split (" ",$line); print("$linearray[0].usage.$linearray[1]=$linearray[2]"); } } #do ldlm stats my @ldlm_stats = ("granted", "grant_rate", "cancel_rate"); foreach my $metric (@ldlm_stats) { my @single_dump = `/usr/sbin/lctl get_param ldlm.namespaces.filter-*.pool.$metric`; foreach my $line (@single_dump) { chomp $line; $line =~ s/\./\=/g; my @linearray = split('=', $line); print "|"; $linearray[2] =~ s/filter-//g; $linearray[2] =~ s/_UUID//g; print("$linearray[2].ldlm.$linearray[4]=$linearray[5]"); } } #close up the stats line print " Lustre Statistics\n";