diff --git a/xCAT-rmc/plugin/rmcmetrix.pm b/xCAT-rmc/plugin/rmcmetrix.pm index ff23b3f17..a4d3cfe56 100755 --- a/xCAT-rmc/plugin/rmcmetrix.pm +++ b/xCAT-rmc/plugin/rmcmetrix.pm @@ -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"); } diff --git a/xCAT-rmc/plugin/rmcmon.pm b/xCAT-rmc/plugin/rmcmon.pm index fa7beca93..dc59ab0fd 100644 --- a/xCAT-rmc/plugin/rmcmon.pm +++ b/xCAT-rmc/plugin/rmcmon.pm @@ -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); - diff --git a/xCAT-server/lib/xcat/plugins/monctrlcmds.pm b/xCAT-server/lib/xcat/plugins/monctrlcmds.pm index 50cdc50e7..5931dac00 100644 --- a/xCAT-server/lib/xcat/plugins/monctrlcmds.pm +++ b/xCAT-server/lib/xcat/plugins/monctrlcmds.pm @@ -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) {