Hi,

your are right ....


Gmetad();
#print_r($grid);
foreach ($grid as $cluster) {
   $clustername=$cluster["NAME"];
   print "<br>".$clustername."<br>";

$x=($grid[$clustername]["HOSTS_UP"] + $grid[$clustername]["HOSTS_DOWN"]);
   print $x;

   # or
   print "<br>";
   $x=($cluster["HOSTS_UP"] + $cluster["HOSTS_DOWN"]);
   print $x;

}

?>

greets
Ron

Am 04.05.2010 16:58, schrieb Bennett, Ron:
Ron,
Thanks, this is what we need. In case we decide not to count rrd files, is there equivalent code to the following to count all hosts in a single cluster?
#print_r($grid);
$mygrid=array_shift($grid);
print "<br>".$mygrid["NAME"]."<br>";
$x=($mygrid["HOSTS_UP"] + $mygrid["HOSTS_DOWN"]);
print $x;
Something like $grid[$cluster] ?
thanks,
Ron

------------------------------------------------------------------------
*From:* Ron Wellnitz [mailto:[email protected]]
*Sent:* Tuesday, May 04, 2010 1:57 AM
*To:* Bennett, Ron
*Cc:* [email protected]
*Subject:* Re: [Ganglia-general] counting all hosts

Hi Ron,

one possibility in php is

test.php:
<?php
include_once "./conf.php";
include_once "./get_context.php";
include_once "./functions.php";
include_once "./ganglia.php";
include_once "./get_ganglia.php";

Gmetad();
#print_r($grid);
$mygrid=array_shift($grid);
print "<br>".$mygrid["NAME"]."<br>";
$x=($mygrid["HOSTS_UP"] + $mygrid["HOSTS_DOWN"]);
print $x;
?>

if you are already in a "orginal" ganglia php script, you do not need the "include"-lines. when a host is down and you restart the gmetad daemon, this down host will not be longer recognize by ganglia !

so it can be usefull to write a little script (php/ksh), which count the number of a uniqe rrd file ... something like this:

$base="/var/lib/ganglia/rrds";
$hosts=0;
foreach (glob("${base}/*/*/cpu_idle.rrd") as $filepath) {
   $array = split("/",$filepath);
   $x = count($array);
   $server  = $array[$x-2];
   $cluster = $array[$x-3];

   if ( $server != "__SummaryInfo__" && $cluster != "__SummaryInfo__" ) {
      $hosts++;
      }
   }
}

if you need to seperate between up and down, you can check the last update of an rrd file

$cmd = "/usr/bin/rrdtool lastupdate $filepath 2>/dev/null";
$last_line = exec($cmd, $dummy, $retval);
if ( $retval == 0 ) {
         $content = split(":",$last_line);
         $timestamp = $content[0];
         $idle = $content[1];
         $diff = time() - $timestamp;
         if ( $diff >= 120 ) { #offline;}
         else {#online;}
}



greets
Ron


Am 03.05.2010 20:09, schrieb Bennett, Ron:
The sample PHP code contains instructions like the following to count nodes for computing averages:
        $series =
              "DEF:'num_nodes'='${rrd_dir}/cpu_user.rrd':'num':AVERAGE "
            . "DEF:'cpu_user'='${rrd_dir}/cpu_user.rrd':'sum':AVERAGE "
            . "CDEF:'ccpu_user'=cpu_user,num_nodes,/ "
This method appears to count "HOSTS UP" as the number of nodes. For a new gmetric, we need to be able to count total hosts (UP and DOWN), not just UP. Is there a recommended method in PHP for getting the total number of nodes (UP plus DOWN)?
Thanks,
Ron


------------------------------------------------------------------------------

_______________________________________________
Ganglia-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ganglia-general
------------------------------------------------------------------------------
_______________________________________________
Ganglia-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ganglia-general

Reply via email to