I just noticed a mistake in my previous patch, I am not sure why, but
the assign function did not like it when I quoted the hash indices in
its second double-quoted value argument. This new patch is the same as
the old one, but with differences on only two lines to correct this
mistake.
~Jason
On Wed, 2003-03-26 at 13:46, Jason A. Smith wrote:
> We had accidentally installed a new php.ini file on our webserver that
> had set the error_reporting to E_ALL. This caused an enormous amount of
> warning messages to be written to apache's error log file, filling it up
> to the 2GB file size limit in just a few days causing apache to crash.
> Since the vast majority of these warnings were about unquoted strings
> being used as array indices, I took the opportunity to fix them. I have
> attached my patch against version 2.5.3 of ganglia-webfrontend. This
> might be useful to prevent someone else from having the same problem if
> they make the same mistake that we did.
>
> ~Jason
--
/------------------------------------------------------------------\
| Jason A. Smith Email: [EMAIL PROTECTED] |
| Atlas Computing Facility, Bldg. 510M Phone: (631)344-4226 |
| Brookhaven National Lab, P.O. Box 5000 Fax: (631)344-7616 |
| Upton, NY 11973-5000 |
\------------------------------------------------------------------/
diff -uNr ganglia-webfrontend-2.5.3-dist/cluster_view.php ganglia-webfrontend-2.5.3/cluster_view.php
--- ganglia-webfrontend-2.5.3-dist/cluster_view.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/cluster_view.php Wed Mar 26 13:27:47 2003
@@ -8,7 +8,7 @@
#
$upcount=count($hosts[$cluster]);
$downcount=count($hosts_down[$cluster]);
-$cpus=__reduce("cpu_num", __sum, $cluster);
+$cpus=__reduce("cpu_num", '__sum', $cluster);
$Cs = $cpus>1 ? "s" : "";
$Ns = $upcount>1 ? "s" : "";
$be = $Ns ? "are" : "is";
@@ -22,9 +22,9 @@
$tpl->assign("down_nodes", "There are no nodes down.");
}
-$tpl->assign( "load_one", __reduce("load_one", __sum, $cluster));
-$tpl->assign( "load_five", __reduce("load_five", __sum, $cluster));
-$tpl->assign( "load_fifteen", __reduce("load_fifteen", __sum, $cluster));
+$tpl->assign( "load_one", __reduce("load_one", '__sum', $cluster));
+$tpl->assign( "load_five", __reduce("load_five", '__sum', $cluster));
+$tpl->assign( "load_fifteen", __reduce("load_fifteen", '__sum', $cluster));
$clusterURL=rawurlencode($cluster);
@@ -37,7 +37,7 @@
"SRC=\"./graph.php?g=cpu&z=medium&c=$clusterURL&$get_metric_string\">");
$firsthost=key($metrics[$cluster][$metric]);
-$units=$metrics[$cluster][$metric][$firsthost][UNITS];
+$units=$metrics[$cluster][$metric][$firsthost]['UNITS'];
$units=$units ? "($units)" : "";
$tpl->assign("metric","$metric $units");
@@ -45,12 +45,12 @@
if (is_array($hosts[$cluster])) {
foreach( $hosts[$cluster] as $k => $v )
{
- $cpu_num = $metrics[$cluster]["cpu_num"][$k][VAL];
+ $cpu_num = $metrics[$cluster]["cpu_num"][$k]['VAL'];
if(!$cpu_num || $cpu_num == 0)
{
$cpu_num = 1;
}
- $load_one = $metrics[$cluster]["load_one"][$k][VAL];
+ $load_one = $metrics[$cluster]["load_one"][$k]['VAL'];
$snapshot[$k] = $load_one/ $cpu_num;
}
@@ -88,14 +88,14 @@
switch ($sort)
{
case "descending":
- __sort($metric, __sort_des, $cluster);
+ __sort($metric, '__sort_des', $cluster);
break;
case "by hostname":
__sort_name($metric, $cluster);
break;
default:
case "ascending":
- __sort($metric, __sort_asc, $cluster);
+ __sort($metric, '__sort_asc', $cluster);
break;
}
@@ -105,7 +105,7 @@
$max=0;
$min=0;
foreach ( $metrics[$cluster][$metric] as $host => $val ) {
- if( $val[TYPE]=="string" or ($max_graphs > 0 and $i > $max_graphs )) {
+ if( $val['TYPE']=="string" or ($max_graphs > 0 and $i > $max_graphs )) {
continue;
}
$rrd_dir = "$rrds/$cluster/$host";
@@ -136,9 +136,9 @@
$host_url = rawurlencode($host);
$host_link="<A HREF=\"?c=$clusterURL&h=$host_url&$get_metric_string\">$host</A>";
- if ($val[TYPE]=="timestamp")
+ if ($val['TYPE']=="timestamp")
{
- $date = date("r", $val[VAL]);
+ $date = date("r", $val['VAL']);
$cell="<td class=metric>".
"<b>$host_link</b><br>".
"<i>$metric:</i> <b>$date</b></td>";
@@ -147,8 +147,8 @@
$tpl->assign("br","</tr><tr><td></td>");
}
}
- elseif( $val[TYPE]=="string" or $val[SLOPE]=="zero" or
- $always_timestamp[$metric] or $always_constant[$metric] or
+ elseif( $val['TYPE']=="string" or $val['SLOPE']=="zero" or
+ isset($always_timestamp[$metric]) or isset($always_constant[$metric]) or
($max_graphs > 0 and $i > $max_graphs ))
{
$cell="<td class=metric>".
diff -uNr ganglia-webfrontend-2.5.3-dist/functions.php ganglia-webfrontend-2.5.3/functions.php
--- ganglia-webfrontend-2.5.3-dist/functions.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/functions.php Wed Mar 26 13:10:43 2003
@@ -45,8 +45,8 @@
{
global $clusters, $metrics;
- $clustertime=$clusters[$cluster][LOCALTIME];
- $boottime=$metrics[$cluster][boottime][$host][VAL];
+ $clustertime=$clusters[$cluster]['LOCALTIME'];
+ $boottime=$metrics[$cluster]['boottime'][$host]['VAL'];
$uptimeS=$clustertime - $boottime;
$uptimeD=intval($uptimeS/86400);
@@ -69,7 +69,7 @@
{
$rack=$rank=$plane=-1;
- $loc=$attrs[LOCATION];
+ $loc=$attrs['LOCATION'];
if ($loc) {
sscanf($loc, "%d,%d,%d", $rack, $rank, $plane);
#echo "Found LOCATION: $rack, $rank, $plane.<br>";
@@ -77,7 +77,7 @@
if ($rack<0 or $rank<0) {
# Try to parse the host name. Assumes a compute-<rack>-<rank>
# naming scheme.
- $n=sscanf($attrs[NAME], "compute-%d-%d", $rack, $rank);
+ $n=sscanf($attrs['NAME'], "compute-%d-%d", $rack, $rank);
$plane=0;
}
return array($rack,$rank,$plane);
@@ -91,11 +91,11 @@
#
function __sort_asc ($a, $b)
{
- return ($a[VAL] > $b[VAL]);
+ return ($a['VAL'] > $b['VAL']);
}
function __sort_des ($a, $b)
{
- return ($a[VAL] < $b[VAL]);
+ return ($a['VAL'] < $b['VAL']);
}
function __sort_name ($metric, $cluster)
@@ -159,6 +159,7 @@
$metric = func_get_arg(0);
$function = func_get_arg(1);
$cluster2reduce = array();
+ $reduction_val = 0;
if( func_num_args() == 3 )
{
@@ -183,9 +184,9 @@
{
foreach($metrics[$name][$metric] as $host => $v )
{
- if ($do_index)
+ if (isset($do_index))
{
- $new_val = $function($reduction_val, $v[VAL]);
+ $new_val = $function($reduction_val, $v['VAL']);
if ($new_val != $reduction_val)
{
$index = $host;
@@ -194,13 +195,13 @@
}
else
{
- $reduction_val = $function($reduction_val, $v[VAL]);
+ $reduction_val = $function($reduction_val, $v['VAL']);
}
}
}
}
- if ($do_index) {
+ if (isset($do_index)) {
return array($reduction_val, $index);
}
else {
@@ -243,16 +244,16 @@
global $get_metric_string;
global $template_name;
- $cpu_num = $metrics[$cluster]["cpu_num"][$host][VAL];
+ $cpu_num = $metrics[$cluster]["cpu_num"][$host]['VAL'];
if(!$cpu_num || $cpu_num == 0)
{
$cpu_num = 1;
}
- $load_one = $metrics[$cluster]["load_one"][$host][VAL];
+ $load_one = $metrics[$cluster]["load_one"][$host]['VAL'];
$value = $load_one/ $cpu_num;
# Check if the host is down
- if( $hosts_down[$cluster][$host] )
+ if( isset($hosts_down[$cluster][$host]) )
{
$image = template("images/node_dead.jpg");
}
diff -uNr ganglia-webfrontend-2.5.3-dist/ganglia.php ganglia-webfrontend-2.5.3/ganglia.php
--- ganglia-webfrontend-2.5.3-dist/ganglia.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/ganglia.php Wed Mar 26 12:29:22 2003
@@ -21,7 +21,7 @@
# Timing the XML download and parsing may give some insight as to when this
# server is becoming overloaded. Necessary because we do not trim the XML
# tree, even in potentially large hierarchies. Gives time in seconds.
-$parsetime;
+$parsetime = 0;
#
@@ -62,14 +62,14 @@
# A counter to help summarize a tree of grids.
$grid_depth = 0;
# The name of our local grid.
-$self;
+$self = "";
# A data structure to keep track of the Grid. A graph in adjacency-list
# format. Only grids can have children, clusters are leaf nodes.
$gridtree=array();
# A stack and pointer for constructing the gridtree graph.
$ancestors=array();
# Stands for 'parent' or 'predecessor'.
-$p;
+$p = "";
# True if the XML tree comes from a pre-grid gmetad. A new gmetad will
# wrap its output in a <GRID> tag.
@@ -86,17 +86,17 @@
if ($tagname == "GANGLIA_XML")
{
- $component = $attrs[SOURCE];
- $version[$component] = $attrs[VERSION];
+ $component = $attrs['SOURCE'];
+ $version[$component] = $attrs['VERSION'];
}
else if ($tagname == "GRID")
{
- $gridname = $attrs[NAME];
+ $gridname = $attrs['NAME'];
$allgrids[$gridname] = $attrs;
#echo "Added grid $grid, parent is $p<br>";
- #echo "Found a GRID: $attrs[NAME], grid_depth = $grid_depth<br>";
- #echo "auth=$attrs[AUTHORITY]<br>";
+ #echo "Found a GRID: $attrs['NAME'], grid_depth = $grid_depth<br>";
+ #echo "auth=$attrs['AUTHORITY']<br>";
if ($grid_depth==0) {
$self = $gridname;
@@ -125,7 +125,7 @@
}
else if ($tagname == "CLUSTER")
{
- $cluster = $attrs[NAME];
+ $cluster = $attrs['NAME'];
#echo "Adding cluster $cluster, parent is $p<br>";
# In new gmetads, GRID is the first tag after GANGLIA_XML.
@@ -147,17 +147,17 @@
}
# To determine health of older (pre 2.5.0) gmond hosts.
- $localtime = $attrs[LOCALTIME];
+ $localtime = $attrs['LOCALTIME'];
$TTL = 15;
}
else if ($tagname == "HOST")
{
- $host = $attrs[NAME];
+ $host = $attrs['NAME'];
/* Check if host is UP or DOWN and place in appropriate array */
$host_up = TRUE;
- $TN = $attrs[TN];
- $TMAX = $attrs[TMAX];
+ $TN = $attrs['TN'];
+ $TMAX = $attrs['TMAX'];
# The new (>2.5.0) method to determine life, as used by gmetad.
if ($TN and $TMAX) {
if ($TN > $TMAX*4)
@@ -165,7 +165,7 @@
}
# The old method.
else {
- if (abs($localtime - $attrs[REPORTED]) > (4*$TTL))
+ if (abs($localtime - $attrs['REPORTED']) > (4*$TTL))
$host_up = FALSE;
}
@@ -193,22 +193,22 @@
# Put host attributes in the metrics array.
$foo = array(
"NAME"=>"ip",
- "VAL"=> $attrs[IP],
+ "VAL"=> $attrs['IP'],
"TYPE"=>"string"
);
- $metrics[$cluster][$foo[NAME]][$host] = $foo;
+ $metrics[$cluster][$foo['NAME']][$host] = $foo;
$foo = array(
"NAME"=>"reported",
- "VAL"=> $attrs[REPORTED],
+ "VAL"=> $attrs['REPORTED'],
"TYPE"=>"timestamp"
);
- $metrics[$cluster][$foo[NAME]][$host] = $foo;
+ $metrics[$cluster][$foo['NAME']][$host] = $foo;
$foo = array(
"NAME"=>"gmond_started",
- "VAL"=> $attrs[GMOND_STARTED],
+ "VAL"=> $attrs['GMOND_STARTED'],
"TYPE"=>"timestamp"
);
- $metrics[$cluster][$foo[NAME]][$host] = $foo;
+ $metrics[$cluster][$foo['NAME']][$host] = $foo;
}
# Update top level summary
@@ -217,13 +217,13 @@
else if ($tagname == "METRIC")
{
- $metric = $attrs[NAME];
+ $metric = $attrs['NAME'];
if ($host_up) {
if ($general_mode) {
# Keep summaries for each child grid.
- if (is_numeric($attrs[VAL])) {
- $grids[$grid][$metric] += $attrs[VAL];
+ if (is_numeric($attrs['VAL'])) {
+ $grids[$grid][$metric] += $attrs['VAL'];
}
}
else {
@@ -232,8 +232,8 @@
}
# Update top level summary.
- if (is_numeric($attrs[VAL]))
- $grids[$self][$metric] += $attrs[VAL];
+ if (is_numeric($attrs['VAL']))
+ $grids[$self][$metric] += $attrs['VAL'];
}
}
}
@@ -279,7 +279,7 @@
$parser = xml_parser_create();
xml_set_element_handler($parser, "__start", "__end" );
- $fp = fsockopen( $ip, $port, &$errno, &$errstr, $timeout);
+ $fp = fsockopen( $ip, $port, $errno, $errstr, $timeout);
if (!$fp)
{
$error = "fsockopen error: $errstr";
@@ -302,7 +302,7 @@
}
fclose($fp);
$end = gettimeofday();
- $parsetime = ($end[sec] + $end[usec]/1e6) - ($start[sec] + $start[usec]/1e6);
+ $parsetime = ($end['sec'] + $end['usec']/1e6) - ($start['sec'] + $start['usec']/1e6);
}
return TRUE;
diff -uNr ganglia-webfrontend-2.5.3-dist/get_ganglia.php ganglia-webfrontend-2.5.3/get_ganglia.php
--- ganglia-webfrontend-2.5.3-dist/get_ganglia.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/get_ganglia.php Wed Mar 26 12:51:44 2003
@@ -6,6 +6,7 @@
#
include_once "./ganglia.php";
+$standalone = FALSE;
if (! Gmetad($ganglia_ip, $ganglia_port) )
{
diff -uNr ganglia-webfrontend-2.5.3-dist/graph.php ganglia-webfrontend-2.5.3/graph.php
--- ganglia-webfrontend-2.5.3-dist/graph.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/graph.php Wed Mar 26 12:55:59 2003
@@ -35,7 +35,7 @@
# http://ganglia.mrcluster.org/graph.php?graph=blob&command=whoami;cat%20/etc/passwd
#
-if($command)
+if(isset($command))
{
exit();
}
diff -uNr ganglia-webfrontend-2.5.3-dist/header.php ganglia-webfrontend-2.5.3/header.php
--- ganglia-webfrontend-2.5.3-dist/header.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/header.php Wed Mar 26 12:49:50 2003
@@ -18,7 +18,7 @@
$tpl->prepare();
// Maintain our path through the grid tree.
-$me = $self . "@" . $grids[$self][AUTHORITY];
+$me = $self . "@" . $grids[$self]['AUTHORITY'];
if ($initgrid)
{
@@ -316,7 +316,7 @@
$context_sorts[]="descending";
$context_sorts[]="by hostname";
- $sort_menu .= "<B>Sorted</B> <SELECT NAME=\"s\" OnChange=\"ganglia_form.submit();\">\n";
+ $sort_menu = "<B>Sorted</B> <SELECT NAME=\"s\" OnChange=\"ganglia_form.submit();\">\n";
foreach ( $context_sorts as $v )
{
$url = rawurlencode($v);
diff -uNr ganglia-webfrontend-2.5.3-dist/host_view.php ganglia-webfrontend-2.5.3/host_view.php
--- ganglia-webfrontend-2.5.3-dist/host_view.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/host_view.php Fri Mar 28 11:44:17 2003
@@ -42,32 +42,32 @@
{
if(is_array($v1))
{
- $name = $v1[NAME];
- if ($v1[TYPE] == "string" or $v1[TYPE]=="timestamp" or $always_timestamp[$name])
+ $name = $v1['NAME'];
+ if ($v1['TYPE'] == "string" or $v1['TYPE']=="timestamp" or $always_timestamp[$name])
{
// Long gmetric name/values will disrupt the display here.
- if ($v1[SOURCE] == "gmond") $s_metrics[$name] = $v1;
+ if ($v1['SOURCE'] == "gmond") $s_metrics[$name] = $v1;
}
- elseif ($v1[SLOPE] == "zero" or $always_constant[$name])
+ elseif ($v1['SLOPE'] == "zero" or $always_constant[$name])
{
$c_metrics[$name] = $v1;
}
else
{
- $graphargs = "c=$clusterURL&h=$host&v=$v1[VAL]&m=$name&r=$range&z=medium&jr=$jobrange&js=$jobstart";
+ $graphargs = "c=$clusterURL&h=$host&v=$v1['VAL']&m=$name&r=$range&z=medium&jr=$jobrange&js=$jobstart";
// Adding units to graph 2003 by Jason Smith <[EMAIL PROTECTED]>.
- if ($v1[UNITS]) {
- $encodeUnits = rawurlencode($v1[UNITS]);
+ if ($v1['UNITS']) {
+ $encodeUnits = rawurlencode($v1['UNITS']);
$graphargs .= "&vl=$encodeUnits";
}
- $g_metrics[$name][graph] = "<IMG HEIGHT=\"147\" WIDTH=\"395\" ALT=\"$host $metric\" ".
+ $g_metrics[$name]['graph'] = "<IMG HEIGHT=\"147\" WIDTH=\"395\" ALT=\"$host $metric\" ".
"SRC=\"./graph.php?$graphargs\">";
}
}
# Add the uptime metric for this host. Cannot be done in ganglia.php,
# since it requires a fully-parsed XML tree. The classic contructor problem.
- $s_metrics[uptime][TYPE] = "string";
- $s_metrics[uptime][VAL] = uptime($host, $cluster);
+ $s_metrics['uptime']['TYPE'] = "string";
+ $s_metrics['uptime']['VAL'] = uptime($host, $cluster);
}
}
}
@@ -80,13 +80,13 @@
{
$tpl->newBlock("string_metric_info");
$tpl->assign("name", $name);
- if( $v[TYPE]=="timestamp" or $always_timestamp[$name])
+ if( $v['TYPE']=="timestamp" or $always_timestamp[$name])
{
- $tpl->assign("value", date("r", $v[VAL]));
+ $tpl->assign("value", date("r", $v['VAL']));
}
else
{
- $tpl->assign("value", "$v[VAL] $v[UNITS]");
+ $tpl->assign("value", sprintf("%s %s",$v['VAL'],$v['UNITS']));
}
}
}
@@ -98,7 +98,7 @@
{
$tpl->newBlock("const_metric_info");
$tpl->assign("name", $name);
- $tpl->assign("value", "$v[VAL] $v[UNITS]");
+ $tpl->assign("value", sprintf("%s %s",$v['VAL'],$v['UNITS']));
}
}
@@ -110,7 +110,7 @@
foreach ( $g_metrics as $name => $v )
{
$tpl->newBlock("vol_metric_info");
- $tpl->assign("graph", $v[graph]);
+ $tpl->assign("graph", $v['graph']);
if($i++ %2)
$tpl->assign("br", "<BR>");
}
diff -uNr ganglia-webfrontend-2.5.3-dist/meta_view.php ganglia-webfrontend-2.5.3/meta_view.php
--- ganglia-webfrontend-2.5.3-dist/meta_view.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/meta_view.php Wed Mar 26 12:45:31 2003
@@ -23,11 +23,11 @@
{
global $grids;
- if ($grids[$source]) {
+ if (isset($grids[$source])) {
return $grids[$source][$metric];
}
else {
- return __reduce($metric, __sum, $source);
+ return __reduce($metric, '__sum', $source);
}
}
@@ -36,7 +36,7 @@
{
global $grids, $clusters;
- if ($grids[$source]) {
+ if (isset($grids[$source])) {
$val = $grids[$source][$metric];
}
else {
@@ -96,7 +96,7 @@
$num_dead_nodes = source_count($key, "HOSTS_DOWN");
$sourceURL = rawurlencode($key);
- if ($grids[$key]) {
+ if (isset($grids[$key])) {
# Is this the our own grid?
if ($key==$self) {
@@ -122,7 +122,7 @@
$graph_url = "c=$sourceURL&$get_metric_string";
$url = "./?$graph_url";
$alt_url = "<a href=\"./?p=2&$graph_url\">(physical view)</a>";
- $localtime = "Cluster Localtime:<BR><B>" . date("F j, Y, g:i a", $clusters[$key][LOCALTIME]) .
+ $localtime = "Cluster Localtime:<BR><B>" . date("F j, Y, g:i a", $clusters[$key]['LOCALTIME']) .
"</B><BR><BR>";
$class = "cluster";
}
@@ -136,7 +136,7 @@
# I dont like this either, but we need to have private clusters because some
# users are skittish about publishing the load info.
- if (!$private[$key]) {
+ if (!isset($private[$key])) {
$tpl->assign("alt_view", "<FONT SIZE=\"-2\">$alt_url</FONT>");
$tpl->assign("load_one", sprintf("%.2f", source_reduce($key, "load_one")));
$tpl->assign("load_five", sprintf("%.2f", source_reduce($key, "load_five")));
@@ -172,11 +172,11 @@
foreach ($sorted_sources as $c=>$value) {
if ($c==$self)
continue;
- if ($private[$c]) {
+ if (isset($private[$c])) {
$Private[$c] = template("images/cluster_private.jpg");
continue;
}
- if ($grids[$c])
+ if (isset($grids[$c]))
$image = load_image("grid", $value);
else
$image = load_image("cluster", $value);
@@ -214,8 +214,8 @@
$name = $names[$k];
$nameurl=rawurlencode($name);
$snaptable .= "<td valign=top align=center>";
- if ($grids[$name]) {
- $snaptable .= "<a href=\"" . $grids[$name][AUTHORITY] ."?gw=fwd&gs=$GridstackURL\">";
+ if (isset($grids[$name])) {
+ $snaptable .= "<a href=\"" . $grids[$name]['AUTHORITY'] ."?gw=fwd&gs=$GridstackURL\">";
}
else {
$snaptable .= "<a href=\"./?c=$nameurl&$get_metric_string\">";
diff -uNr ganglia-webfrontend-2.5.3-dist/physical_view.php ganglia-webfrontend-2.5.3/physical_view.php
--- ganglia-webfrontend-2.5.3-dist/physical_view.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/physical_view.php Wed Mar 26 13:30:11 2003
@@ -28,12 +28,12 @@
#
# Give the capacities of this cluster: total #CPUs, Memory, Disk, etc.
#
-$CPUs = __reduce("cpu_num", __sum, $cluster);
+$CPUs = __reduce("cpu_num", '__sum', $cluster);
# Divide by 1024^2 to get Memory in GB.
-$Memory = sprintf("%.1f GB",__reduce("mem_total", __sum, $cluster)/(float)1048576);
-$Disk = __reduce("disk_total", __sum, $cluster);
+$Memory = sprintf("%.1f GB",__reduce("mem_total", '__sum', $cluster)/(float)1048576);
+$Disk = __reduce("disk_total", '__sum', $cluster);
$Disk = $Disk ? sprintf("%.1f GB", $Disk) : "Unknown";
-list($MostFull,$name) = __reduce("part_max_used", __max, $cluster);
+list($MostFull,$name) = __reduce("part_max_used", '__max', $cluster);
$tpl->assign("CPUs", $CPUs);
$tpl->assign("Memory", $Memory);
$tpl->assign("Disk", $Disk);
@@ -84,12 +84,12 @@
# The metrics we need for this node.
# A megabyte of memory is 1024 KB. This differs from hard drives, where
# one MB = 1000 bytes. Everyone agree this is a bad double-standard?
- $mem_totalMB = intval(intval($M[mem_total][$name][VAL])/1024);
- $load_one=$M[load_one][$name][VAL];
- $cpu_speed=$M[cpu_speed][$name][VAL];
+ $mem_totalMB = intval(intval($M['mem_total'][$name]['VAL'])/1024);
+ $load_one=$M['load_one'][$name]['VAL'];
+ $cpu_speed=$M['cpu_speed'][$name]['VAL'];
# Choose load color.
- $cpu_num=$M[cpu_num][$name][VAL];
+ $cpu_num=$M['cpu_num'][$name]['VAL'];
if (!$cpu_num) { $cpu_num=1; }
$loadindex=intval($load_one/($loadscalar*$cpu_num))+1;
# 10 is currently the highest allowed load index.
@@ -118,8 +118,8 @@
$info = $hardware;
}
else if ($verbose > 2) {
- $clustertime=$clusters[$cluster][LOCALTIME];
- $heartbeat=$M[reported][$name][VAL];
+ $clustertime=$clusters[$cluster]['LOCALTIME'];
+ $heartbeat=$M['reported'][$name]['VAL'];
$age = $clustertime - $heartbeat;
$age .= "s";
$info = "<font size=-2>Last heartbeat $age ago</font>";
@@ -171,7 +171,7 @@
list($rack, $rank) = findlocation($v);
if ($rack>=0 and $rank>=0) {
- $racks[$rack][$rank]=array($v[NAME],"UP");
+ $racks[$rack][$rank]=array($v['NAME'],"UP");
continue;
}
else {
@@ -179,7 +179,7 @@
if (! ($i % 25)) {
$unknownID--;
}
- $racks[$unknownID][] = array($v[NAME],"UP");
+ $racks[$unknownID][] = array($v['NAME'],"UP");
}
}
}
@@ -187,7 +187,7 @@
foreach ($hosts_down[$cluster] as $host=>$v) {
list($rack, $rank) = findlocation($v);
if ($rack>=0 and $rank>=0) {
- $racks[$rack][$rank]=array($v[NAME],"DOWN");
+ $racks[$rack][$rank]=array($v['NAME'],"DOWN");
continue;
}
else {
@@ -195,7 +195,7 @@
if (! ($i % 25)) {
$unknownID--;
}
- $racks[$unknownID][] = array($v[NAME],"DOWN");
+ $racks[$unknownID][] = array($v['NAME'],"DOWN");
}
}
}
diff -uNr ganglia-webfrontend-2.5.3-dist/show_node.php ganglia-webfrontend-2.5.3/show_node.php
--- ganglia-webfrontend-2.5.3-dist/show_node.php Fri Mar 7 16:30:38 2003
+++ ganglia-webfrontend-2.5.3/show_node.php Wed Mar 26 13:26:24 2003
@@ -34,7 +34,7 @@
# An array of [Metrics][Hostname][NAME|VAL|TYPE|UNITS|SOURCE].
$M=$metrics[$cluster];
-$tpl->assign("ip", $M[ip][$name][VAL]);
+$tpl->assign("ip", $M['ip'][$name]['VAL']);
# Find the host's physical location in the cluster.
$hostattrs = ($state=="UP") ? $hosts[$cluster][$name] : $hosts_down[$cluster][$name];
@@ -43,30 +43,30 @@
$tpl->assign("location",$location);
# The metrics we need for this node.
-$mem_totalMB = intval(intval($M[mem_total][$name][VAL])/1024);
-$load_one=$M[load_one][$name][VAL];
-$load_five=$M[load_five][$name][VAL];
-$load_fifteen=$M[load_fifteen][$name][VAL];
-$cpu_user=$M[cpu_user][$name][VAL];
-$cpu_system=$M[cpu_system][$name][VAL];
-$cpu_idle=$M[cpu_idle][$name][VAL];
-$cpu_num=$M[cpu_num][$name][VAL];
+$mem_totalMB = intval(intval($M['mem_total'][$name]['VAL'])/1024);
+$load_one=$M['load_one'][$name]['VAL'];
+$load_five=$M['load_five'][$name]['VAL'];
+$load_fifteen=$M['load_fifteen'][$name]['VAL'];
+$cpu_user=$M['cpu_user'][$name]['VAL'];
+$cpu_system=$M['cpu_system'][$name]['VAL'];
+$cpu_idle=$M['cpu_idle'][$name]['VAL'];
+$cpu_num=$M['cpu_num'][$name]['VAL'];
# Cannot be zero, since we use it as a divisor.
if (!$cpu_num) { $cpu_num=1; }
-$cpu_speed=$M[cpu_speed][$name][VAL];
-$disk_total=$M[disk_total][$name][VAL];
-$disk_free=$M[disk_free][$name][VAL];
+$cpu_speed=$M['cpu_speed'][$name]['VAL'];
+$disk_total=$M['disk_total'][$name]['VAL'];
+$disk_free=$M['disk_free'][$name]['VAL'];
$disk_use = $disk_total - $disk_free;
-$disk_units=$M[disk_total][$name][UNITS];
-$part_max_used=$M[part_max_used][$name][VAL];
+$disk_units=$M['disk_total'][$name]['UNITS'];
+$part_max_used=$M['part_max_used'][$name]['VAL'];
# Disk metrics are newer (as of 2.5.0), so we check more carefully.
$disk = ($disk_total) ? "Using $disk_use of $disk_total $disk_units" : "Unknown";
$part_max = ($part_max_used) ? "$part_max_used% used." : "Unknown";
# Compute time of last heartbeat from node's dendrite.
-$clustertime=$clusters[$cluster][LOCALTIME];
-$heartbeat=$M[reported][$name][VAL];
+$clustertime=$clusters[$cluster]['LOCALTIME'];
+$heartbeat=$M['reported'][$name]['VAL'];
$age = $clustertime - $heartbeat;
$s = ($age>1) ? "s" : "";
$tpl->assign("age","$age second$s");
@@ -112,16 +112,16 @@
$tpl->assign("idle",percentindex(100 - $cpu_idle));
# Software metrics
-$os_name=$M[os_name][$name][VAL];
-$os_release=$M[os_release][$name][VAL];
-$machine_type=$M[machine_type][$name][VAL];
-$boottime=$M[boottime][$name][VAL];
+$os_name=$M['os_name'][$name]['VAL'];
+$os_release=$M['os_release'][$name]['VAL'];
+$machine_type=$M['machine_type'][$name]['VAL'];
+$boottime=$M['boottime'][$name]['VAL'];
$booted=date("F j, Y, g:i a", $boottime);
$uptime=uptime($name,$cluster);
# Turning into MBs. A MB is 1024 bytes.
-$swap_free=$M[swap_free][$name][VAL]/1024.0;
-$swap_total=sprintf("%.1f", $M[swap_total][$name][VAL]/1024.0);
+$swap_free=$M['swap_free'][$name]['VAL']/1024.0;
+$swap_total=sprintf("%.1f", $M['swap_total'][$name]['VAL']/1024.0);
$swap_used=sprintf("%.1f", $swap_total - $swap_free);
$tpl->assign("OS","$os_name $os_release ($machine_type)");