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