Listing 2 co_backperf.pl
#!/usr/bin/perl -w
# purpose: collect bpimage output
# and store in db
use DBI;
use Data::Dumper;
use strict;
my $success = 0;
my $failure = 0;
my @failures;
# Connect to DB
my $database = 'nbperf';
my $hostname = 'databaseserver';
my $dsn = "DBI:mysql:database=$database;host=$hostname";
my $user = 'database_user';
my $password = 'password';
my $dbh = DBI->connect($dsn, $user, $password);
# list the systems to collect data on
my @systems = ('server1','server2');
foreach my $system (@systems) {
my $host=$system;
print "\n--> Trying $host \n";
my $local_user="root";
my $remote_user="root";
# get all image data since 1980 aka everything
my $cmd=" /opt/openv/netbackup/bin/admincmd/bpimagelist -d 01/01/1980";
my $query = qq{
};
my @lines;
if (@lines = `rsh $host $cmd`) {
$success++;
print "Parsing, $host, stage 1: ";
print "Got " . scalar(@lines) . " lines \n";
foreach my $line (@lines) {
my ($backupid, $seconds, $client, $schedtype, $kb, $num_files);
my ($kbpersec, $policy, $backdate, $backserver);
if ($line =~ /IMAGE/) {
my @fields;
(@fields) = split(/\s+/,$line);
$backupid = $fields[5];
$seconds = $fields[14];
$client = $fields[1];
$schedtype = $fields[11];
$kb = $fields[18];
$num_files = $fields[19];
$kbpersec = ($kb/$seconds);
$policy = $fields[6];
$backdate = $fields[13];
$backserver= $host;
$backdate = &humantime($backdate);
print "Updating database... \n";
$query = qq{
INSERT INTO backperf
(backupid, seconds, client, schedtype, kbytes,
numfiles, kbpersec, policy, backdate, backserver)
values
('$backupid', '$seconds', '$client', '$schedtype',
'$kb', '$num_files', $kbpersec, '$policy',
'$backdate', '$backserver')
};
print $query;
my $sth = $dbh->prepare($query);
$sth->execute;
} # end up line record for each image
}
} else {
$failure++;
push(@failures, $host);
}
}
print "Total success: $success \n";
print "Total fails: $failure \n";
($failure>0) && print "Failed systems: @failures \n";
#################
sub humantime {
# convert a unix time to human readable time
my $time_req = shift;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = \
localtime($time_req);
$year = 1900+$year;
$mon++;
my $humantime = "$year-$mon-$mday $hour:$min:$sec \n";
return $humantime;
}
|