.
[corvix.git] / var / deb-package / cluster_raw_old / opt / cluster / lib / www / ganglia / meta_view.php
blob41695b4a5dd2474ad03fac31d1169ad1e0bb0002
1 <?php
2 /* $Id: meta_view.php 970 2008-02-14 19:16:19Z carenas $ */
3 $tpl = new TemplatePower( template("meta_view.tpl") );
4 $tpl->prepare();
6 # Find the private clusters. But no one is emabarrassed in the
7 # control room (public only!).
8 if ( $context != "control" ) {
9 $private=embarrassed();
12 $source_names = array_keys($grid);
14 # Build a list of cluster names and randomly pick a smaller subset to
15 # display for control room mode. This allows a dedicated host to
16 # eventually cycle through all the graphs w/o scrolling the mouse. A bunch
17 # of these stations could monitor a large grid.
19 # For the standard meta view still display all the hosts.
21 if ( $context == "control" ) {
22 srand((double)microtime()*1000000);
23 shuffle($source_names);
24 $subset = array_slice($source_names, 0, abs($controlroom));
25 $source_names = $subset;
28 foreach( $source_names as $c)
30 $cpucount = $metrics[$c]["cpu_num"]['SUM'];
31 if (!$cpucount) $cpucount=1;
32 $load_one = $metrics[$c]["load_one"]['SUM'];
33 $value = (double) $load_one / $cpucount;
34 $sorted_sources[$c] = $value;
35 $values[$c] = $value;
36 isset($total_load) or $total_load = 0;
37 $total_load += $value;
39 # Insure self is always first
40 $sorted_sources[$self] = 999999;
42 if ($sort == "descending") {
43 arsort($sorted_sources);
45 else if ($sort == "by name") {
46 ksort($sorted_sources);
47 } else if ($sort == "by hosts up") {
48 foreach ($sorted_sources as $source => $val) {
49 $sorted_sources[$source] = intval($grid[$source]['HOSTS_UP']);
51 $sorted_sources[$self] = 999999;
52 arsort($sorted_sources);
53 } else if ($sort == "by hosts down") {
54 foreach ($sorted_sources as $source => $val) {
55 $sorted_sources[$source] = intval($grid[$source]['HOSTS_DOWN']);
57 $sorted_sources[$self] = 999999;
58 arsort($sorted_sources);
59 } else {
60 $sorted_sources[$self] = -1;
61 asort($sorted_sources);
64 # Display the sources. The first is ourself, the rest are our children.
65 foreach ( $sorted_sources as $source => $val )
67 $m = $metrics[$source];
68 $sourceurl = rawurlencode($source);
69 if (isset($grid[$source]['GRID']) and $grid[$source]['GRID'])
71 $localtime = $grid[$source]['LOCALTIME'];
72 # Is this the our own grid?
73 if ($source==$self)
75 # Negative control room values means dont display grid summary.
76 if ($controlroom < 0) continue;
77 $num_sources = count($sorted_sources) - 1;
78 $name = "$self $meta_designator ($num_sources sources)";
79 $graph_url = "me=$sourceurl&amp;$get_metric_string";
80 $url = "./?$get_metric_string";
82 else
84 # Set grid context.
85 $name = "$source $meta_designator";
86 $graph_url = "G=$sourceurl&amp;$get_metric_string&amp;st=$localtime";
87 $authority = $grid[$source]['AUTHORITY'];
88 $url = "$authority?gw=fwd&amp;gs=$gridstack_url";
90 $alt_url = "<a href=\"./?t=yes&amp;$get_metric_string\">(tree view)</a>";
91 $class = "grid";
93 else
95 # Set cluster context.
96 $name = $source;
97 $localtime = $grid[$source]['LOCALTIME'];
98 $graph_url = "c=$sourceurl&amp;$get_metric_string&amp;st=$localtime";
99 $url = "./?c=$sourceurl&amp;$get_metric_string";
100 $alt_url = "<a href=\"./?p=2&amp;$graph_url\">(physical view)</a>";
101 $class = "cluster";
104 $cpu_num = $m["cpu_num"]['SUM'] ? $m["cpu_num"]['SUM'] : 1;
105 $cluster_load15 = sprintf("%.0f", ((double) $m["load_fifteen"]['SUM'] / $cpu_num) * 100);
106 $cluster_load5 = sprintf("%.0f", ((double) $m["load_five"]['SUM'] / $cpu_num) * 100);
107 $cluster_load1 = sprintf("%.0f", ((double) $m["load_one"]['SUM'] / $cpu_num) * 100);
108 $cluster_load = "$cluster_load15%, $cluster_load5%, $cluster_load1%";
110 $tpl->newBlock ("source_info");
111 $tpl->assign("name", $name );
112 $tpl->assign("cpu_num", $m["cpu_num"]['SUM']);
113 $tpl->assign("url", $url);
114 $tpl->assign("class", $class);
115 if (isset($num_sources))
116 $tpl->assign("Sources: $num_sources");
118 # I dont like this either, but we need to have private clusters because some
119 # users are skittish about publishing the load info.
120 if (!isset($private[$source]) or !$private[$source])
122 $tpl->assign("alt_view", "<FONT SIZE=\"-2\">$alt_url</FONT>");
123 # Each block has a different namespace, so we need to redefine variables.
124 $tpl->newBlock("public");
125 if ($localtime)
126 $tpl->assign("localtime", "<font size=-1>Localtime:</font><br>&nbsp;&nbsp;"
127 . date("Y-m-d H:i", $localtime) );
128 if ($cluster_load)
129 $tpl->assign("cluster_load", "<font size=-1>Avg Load (15, 5, 1m):</font>"
130 ."<br>&nbsp;&nbsp;$cluster_load");
131 $tpl->assign("cpu_num", $m["cpu_num"]['SUM']);
132 $tpl->assign("num_nodes", $grid[$source]["HOSTS_UP"] );
133 $tpl->assign("num_dead_nodes", $grid[$source]["HOSTS_DOWN"] );
134 $tpl->assign("range", $range);
135 $tpl->assign("name", $name );
136 $tpl->assign("url", $url);
137 $tpl->assign("graph_url", $graph_url);
138 if(isset($base64img)) {
139 $tpl->assign("base64img", $base64img);
142 else
144 $tpl->newBlock("private");
145 $tpl->assign("num_nodes", $grid[$source]["HOSTS_UP"] + $grid[$source]["HOSTS_DOWN"] );
146 $tpl->assign("cpu_num", $m["cpu_num"]['SUM']);
147 if ($localtime)
148 $tpl->assign("localtime", "<font size=-1>Localtime:</font><br>&nbsp;&nbsp;"
149 . date("Y-m-d H:i",$localtime));
153 # Show load images.
154 if ($show_meta_snapshot=="yes") {
155 $tpl->newBlock("show_snapshot");
156 $tpl->assign("self", "$self $meta_designator");
158 foreach ($sorted_sources as $c=>$value) {
159 if ($c==$self) continue;
160 if (isset($private[$c]) and $private[$c]) {
161 $Private[$c] = template("images/cluster_private.jpg");
162 continue;
164 $names[]=$c;
166 if (isset($grid[$c]['GRID']) and $grid[$c]['GRID'])
167 $image = load_image("grid", $values[$c]);
168 else
169 $image = load_image("cluster", $values[$c]);
170 $Images[]=$image;
172 # Add private cluster pictures to the end.
173 if (isset($Private) and is_array($Private)) {
174 foreach ($Private as $c=>$image) {
175 $names[]=$c;
176 $Images[]=$image;
180 # All this fancyness is to get the Cluster names
181 # above the image. Not easy with template blocks.
182 $cols=5;
183 $i = 0;
184 $count=count($names);
185 while ($i < $count)
187 $snapnames = "";
188 $snapimgs = "";
189 $tpl->newBlock("snap_row");
190 foreach(range(0, $cols-1) as $j)
192 $k = $i + $j;
193 if ($k >= $count) break;
194 $n = $names[$k];
195 $snapnames .= "<td valign=bottom align=center><b>$n</b></td>\n";
196 $snapimgs .= "<td valign=top align=center>";
197 if (isset($grid[$n]['GRID']) and $grid[$n]['GRID'])
198 $snapimgs .= "<a href=\"" . $grid[$n]['AUTHORITY'] ."?gw=fwd&amp;gs=$gridstack_url\">";
199 else
201 $nameurl = rawurlencode($n);
202 $snapimgs .= "<a href=\"./?c=$nameurl&amp;$get_metric_string\">";
204 $snapimgs .= "<img src=$Images[$k] border=0 align=top></a></td>\n";
206 $tpl->assign("names", $snapnames);
207 $tpl->assign("images", $snapimgs);
208 $i += $cols;
212 $tpl->printToScreen();