change monitor summary data to average of all resources and nodes

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3605 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
ellen56 2009-06-19 07:38:00 +00:00
parent 122b806f19
commit 025a8454ad
3 changed files with 69 additions and 83 deletions

View File

@ -77,6 +77,7 @@ sub update_metrix2rrd
my $rrd = undef;
my $process_time = xCAT::Utils->runcmd("date +%s", 0);
$process_time = (int $process_time/$step)*$step;
my $temp = undef;
while(($attr, $nnlist) = each %metrix){
while(($nnlist, $name) = each %{$metrix{$attr}}){
@ -89,7 +90,8 @@ sub update_metrix2rrd
}
if($nnlist eq 'summary'){
$rrd = "$rrddir/"."$attr.rrd";
$ret = xCAT_monitoring::rrdutil::push_data_to_rrd($rrd, $metrix{$attr}{summary}, $metrix{$attr}{number}, $step, $process_time, 'GAUGE');
$temp = $metrix{$attr}{summary}/$metrix{$attr}{number};
$ret = xCAT_monitoring::rrdutil::push_data_to_rrd($rrd, $temp, $metrix{$attr}{number}, $step, $process_time, 'GAUGE');
if($ret != 0){
return ($ret, "Can't push data to $rrd\n");
}
@ -100,7 +102,8 @@ sub update_metrix2rrd
}
if($name eq 'summary'){
$rrd = "$rrddir/$attr.rrd";
$ret = xCAT_monitoring::rrdutil::push_data_to_rrd($rrd, $metrix{$attr}{$nnlist}{summary}, $metrix{$attr}{$nnlist}{number}, $step, $process_time, 'GAUGE');
$temp = $metrix{$attr}{$nnlist}{summary}/$metrix{$attr}{$nnlist}{number};
$ret = xCAT_monitoring::rrdutil::push_data_to_rrd($rrd, $temp, $metrix{$attr}{$nnlist}{number}, $step, $process_time, 'GAUGE');
if($ret != 0){
return($ret, "Can't push data to $rrd\n");
}
@ -215,28 +218,28 @@ sub getmetrix
@attrs = split /,/, $attrlist;
$attr = join '::', @attrs;
if(xCAT::Utils->isMN()){
if($rname eq "__ALL__"){
$cmd = "CT_MANAGEMENT_SCOPE=1 lsrsrc-api -i -s $rsrc"."::::Name::NodeNameList::$attr";
@output = xCAT::Utils->runcmd($cmd, 0);
if($::RUNCMD_RC != 0){
$line = join '', @output;
return ($::RUNCMD_RC, $line);
}
&parse_lsrsrc_output($rsrc, \@attrs, \@output);
} else {
@names = split /,/, $rname;
foreach $name (@names){
$cmd = "CT_MANAGEMENT_SCOPE=1 lsrsrc-api -i -s $rsrc"."::\'Name==\"$name\"\'::Name::NodeNameList::$attr";
@output = xCAT::Utils->runcmd($cmd, 0);
if($::RUNCMD_RC != 0){
$line = join '', @output;
return ($::RUNCMD_RC, $line);
}
&parse_lsrsrc_output($rsrc, \@attrs, \@output);
}
}
}
# if(xCAT::Utils->isMN()){
# if($rname eq "__ALL__"){
# $cmd = "CT_MANAGEMENT_SCOPE=1 lsrsrc-api -i -s $rsrc"."::::Name::NodeNameList::$attr";
# @output = xCAT::Utils->runcmd($cmd, 0);
# if($::RUNCMD_RC != 0){
# $line = join '', @output;
# return ($::RUNCMD_RC, $line);
# }
# &parse_lsrsrc_output($rsrc, \@attrs, \@output);
# } else {
# @names = split /,/, $rname;
# foreach $name (@names){
# $cmd = "CT_MANAGEMENT_SCOPE=1 lsrsrc-api -i -s $rsrc"."::\'Name==\"$name\"\'::Name::NodeNameList::$attr";
# @output = xCAT::Utils->runcmd($cmd, 0);
# if($::RUNCMD_RC != 0){
# $line = join '', @output;
# return ($::RUNCMD_RC, $line);
# }
# &parse_lsrsrc_output($rsrc, \@attrs, \@output);
# }
# }
# }
if($rname eq "__ALL__"){
$cmd = "CT_MANAGEMENT_SCOPE=3 lsrsrc-api -i -s $rsrc"."::::Name::NodeNameList::$attr";
@ -263,7 +266,7 @@ sub getmetrix
foreach $nnlist (keys %{$metrix{$attr}}){
if(($nnlist ne 'summary') && ($nnlist ne 'number')){
$metrix{$attr}{summary} += $metrix{$attr}{$nnlist}{summary};
$metrix{$attr}{number} += 1;
$metrix{$attr}{number} += $metrix{$attr}{$nnlist}{number};
}
}
@ -339,6 +342,7 @@ sub get_sum_metrix
my @rmc_nodes = ();
my @svc_nodes = ();
my $node = undef;
my $temp = undef;
# my @threads = ();
# my $current_thread = 0;
my $i = undef;
@ -436,10 +440,12 @@ sub get_sum_metrix
foreach $nodename (keys %{$summary{$attribute}}){
foreach $time (keys %{$summary{$attribute}{$nodename}}){
print "$attribute.$nodename.$time $summary{$attribute}{$nodename}{$time}{sum} $summary{$attribute}{$nodename}{$time}{num}\n";
$summetrix{$attribute}{$time}{sum} += $summary{$attribute}{$nodename}{$time}{sum};
$temp = $summary{$attribute}{$nodename}{$time}{sum} * $summary{$attribute}{$nodename}{$time}{num};
$summetrix{$attribute}{$time}{sum} += $temp;
$summetrix{$attribute}{$time}{num} += $summary{$attribute}{$nodename}{$time}{num};
}
}
}
my $rrdcluster = "/var/rrd/cluster";
@ -450,7 +456,8 @@ sub get_sum_metrix
my @times = keys(%{$summetrix{$attribute}});
my @sorttimes = sort @times;
foreach $time (@sorttimes){
$code = xCAT_monitoring::rrdutil::push_data_to_rrd("$rrdcluster/$attribute.rrd", $summetrix{$attribute}{$time}{sum}, $summetrix{$attribute}{$time}{num}, $step, $time, 'GAUGE');
$temp = $summetrix{$attribute}{$time}{sum}/$summetrix{$attribute}{$time}{num};
$code = xCAT_monitoring::rrdutil::push_data_to_rrd("$rrdcluster/$attribute.rrd", $temp, $summetrix{$attribute}{$time}{num}, $step, $time, 'GAUGE');
if($code != 0){
return($code, "Can't push data to $rrdcluster/$attribute.rrd");
}

View File

@ -1467,12 +1467,25 @@ sub showmetrix($rrddir, $attrs, $start_time, $end_time)
my $timestamp = undef;
my $sum = undef;
my $num = undef;
my $remote = undef;
if($rrddir =~ /:/){
($remote,$rrddir) = split /:/,$rrddir;
}
foreach $attr (@attrlist) {
@namelist = ();
@timelist = ();
%hash = {};
$output = `ls -A $rrddir/$attr*`;
if($remote){
$output = xCAT::Utils->runcmd("xdsh $remote 'ls -A /var/rrd/$rrddir/$attr*'", 0);
if($::RUNCMD_RC != 0){
return $result;
}
$output =~ s/$remote: \/var\/rrd\//''/;
} else {
$output = xCAT::Utils->runcmd("ls -A $rrddir/$attr*", 0);
}
@files = split /\n/, $output;
foreach $file (@files) {
if($file =~ /$attr\.rrd$/){
@ -1481,7 +1494,11 @@ sub showmetrix($rrddir, $attrs, $start_time, $end_time)
$name = $1;
}
push @namelist, $name;
$output = xCAT_monitoring::rrdutil::RRD_fetch($file, $start_time, $end_time);
if($remote){
$output = xCAT_monitoring::rrdutil::RRD_fetch($file, $start_time, $end_time, $remote);
} else {
$output = xCAT_monitoring::rrdutil::RRD_fetch($file, $start_time, $end_time);
}
$line = pop(@$output);
if($line =~ /ERROR/){
push @$result, $line;
@ -1499,7 +1516,7 @@ sub showmetrix($rrddir, $attrs, $start_time, $end_time)
if(! grep {/$timestamp/} @timelist){
push @timelist, $timestamp;
}
$hash{$name}{$timestamp} = sprintf "%.4f:%d", $sum, $num;
$hash{$name}{$timestamp} = sprintf "%.4f", $sum/$num;
} elsif ($line =~ /^(\d+): (\S+)/){
$timestamp = $1;
$sum = $2;
@ -1578,23 +1595,21 @@ sub show {
if($sum){
foreach $node (@$noderef){
if($node eq $localhostname){
if($isSV){
$rrddir = "/var/rrd/summary";
} else {
$rrddir = "/var/rrd/cluster";
my @metrixconf = xCAT_monitoring::rmcmetrix::get_metrix_conf();
my $rmetrixcmd = undef;
while(@metrixconf){
my ($rsrc, $rname, $attrlist, $minute);
$rsrc = shift @metrixconf;
$rname = shift @metrixconf;
$attrlist = shift @metrixconf;
$minute = shift @metrixconf;
$rmetrixcmd = "/opt/xcat/sbin/rmcmon/rmcmetrixmon sum $rsrc $attrlist $minute";
xCAT::Utils->runcmd($rmetrixcmd, 0);
}
$rrddir = "/var/rrd/cluster";
my @metrixconf = xCAT_monitoring::rmcmetrix::get_metrix_conf();
my $rmetrixcmd = undef;
while(@metrixconf){
my ($rsrc, $rname, $attrlist, $minute);
$rsrc = shift @metrixconf;
$rname = shift @metrixconf;
$attrlist = shift @metrixconf;
$minute = shift @metrixconf;
$rmetrixcmd = "/opt/xcat/sbin/rmcmon/rmcmetrixmon sum $rsrc $attrlist $minute";
xCAT::Utils->runcmd($rmetrixcmd, 0);
}
} else {
} elsif(xCAT::Utils->isSN($node)){
$rrddir = "$node:summary";
} else {
$rrddir = "/var/rrd/$node";
}
$output = &showmetrix($rrddir, $attrs, $start_time, $end_time);
@ -1613,7 +1628,3 @@ sub show {
return (0, "");
}
#my $nref = ["hv8plus02", "hv8plus03"];
#my $cb = {};
#&show($nref, '0', '100', 'RecByteRate,XmitByteRate', 0, $cb);

View File

@ -128,38 +128,6 @@ sub preprocess_request
foreach(@hostinfo) {$iphash{$_}=1;}
if (!$isSV) { $iphash{'noservicenode'}=1;}
# if($command eq "monshow"){
# my $keynosvcnode = undef;
# foreach (@mon_servers){
# my @server_pair=split(':', $_);
# my $sv=$server_pair[0];
# my $mon_nodes=$mon_hierachy->{$_};
# if ((!$mon_nodes) || (@$mon_nodes ==0)) { next; }
# if(($sv eq 'noservicenode') && ($a_ret[2] & 0x1)){
# $keynosvcnode = $_;
# my $i = 0;
# foreach (@$mon_nodes){
# if(xCAT::Utils->isSN($_)){
# push @{$mon_hierachy->{$_}}, $_;
# push @mon_servers, $_;
# delete $mon_nodes->[$i];
# }
# $i++;
# }
# }
# }
# if(($keynosvcnode) && ($a_ret[2] & 0x2)){
# if(@{$mon_hierachy->{$keynosvcnode}} == 0){
# my $reqcopy = {%$req};
# push @{$reqcopy->{module}}, $a_ret[1];
# push @{$reqcopy->{priv}}, $a_ret[2];
# push @{$reqcopy->{priv}}, $a_ret[3];
# push @{$reqcopy->{priv}}, $a_ret[5];
# push @{$reqcopy->{priv}}, $a_ret[6];
# push @requests, $reqcopy;
# }
# }
# }
foreach (@mon_servers) {
#service node come in pairs, the first one is the monserver adapter that facing the mn,
# the second one is facing the cn. we use the first one here
@ -1726,7 +1694,7 @@ sub preprocess_monshow
my $noderange=$ARGV[1];
@nodes = noderange($noderange);
my @temp = nodesmissed;
if(@temp && xCAT::Utils->isMN()){
if($sum && @temp && xCAT::Utils->isMN()){
my $localhost = hostname();
my $i = 0;
foreach (@temp) {