ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/reports/php/latest/latest.php
Revision: 1.43
Committed: Mon Oct 21 13:02:58 2002 UTC (22 years, 1 month ago) by tdb
Branch: MAIN
Changes since 1.42: +8 -6 lines
Log Message:
Add support for disk inode usage, and paging activity. Have added to both
the latest data page, and to the graphs sections. Also reworked the memory,
swap, and disk graphing to be percentage based.

File Contents

# User Rev Content
1 pjm2 1.1 <?php
2    
3 tdb 1.37 #
4     # i-scream central monitoring system
5 tdb 1.41 # http://www.i-scream.org.uk
6 tdb 1.37 # Copyright (C) 2000-2002 i-scream
7     #
8     # This program is free software; you can redistribute it and/or
9     # modify it under the terms of the GNU General Public License
10     # as published by the Free Software Foundation; either version 2
11     # of the License, or (at your option) any later version.
12     #
13     # This program is distributed in the hope that it will be useful,
14     # but WITHOUT ANY WARRANTY; without even the implied warranty of
15     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     # GNU General Public License for more details.
17     #
18     # You should have received a copy of the GNU General Public License
19     # along with this program; if not, write to the Free Software
20     # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21     #
22    
23 pjm2 1.1 # Navigation for the i-scream reports.
24     # pjm2@ukc.ac.uk
25     #
26     # CONFIGURABLE CONSTANTS: -
27    
28     include("latest_config.inc.php");
29    
30     #
31     # END CONFIGURATION
32    
33 pjm2 1.18 include("iutils.inc.php");
34 pjm2 1.1
35 pjm2 1.9 function printLine($title) {
36 pjm2 1.19 echo "<hr style=\"color:#9999ff;\">";
37 pjm2 1.9 echo "<b>$title</b>";
38 pjm2 1.6 }
39    
40 pjm2 1.1
41 tdb 1.42 function showStat($title, $value, $input, $graph="") {
42 pjm2 1.24
43     $report = $value;
44    
45 pjm2 1.28 $value = getPregMatch($value, $input);
46 tdb 1.38 if (!isset($value)) {
47 pjm2 1.8 $value = "<i><font color=\"#999999\">not sent</font></i>";
48 pjm2 1.1 }
49     ?>
50     <table border="0" width="100%">
51     <tr>
52 pjm2 1.24 <td width="50%" align="right" valign="top">
53     <b><?=$title?></b>
54     </td>
55     <td width="50%" align="left" valign="top">
56     <? if (preg_match("/^[0-9]+\.?[0-9]*$/", $value)) {
57 tdb 1.42 linkToHistory($graph);
58 pjm2 1.24 } ?>
59     <?=$value?></td>
60 pjm2 1.1 </tr>
61     </table>
62     <?
63     }
64    
65    
66 tdb 1.42 function linkToHistory($graph) {
67 pjm2 1.20 global $machine;
68 tdb 1.42 if(!empty($graph)) {
69     echo <<<EOT
70     <a href="graphs.php?machine_name=$machine&graph=$graph&submit=Show"><img src="minichart.gif" alt="View historical graphs of this data" width="20" height="20" border="0"></a>
71 pjm2 1.20 EOT;
72 tdb 1.42 }
73 pjm2 1.20 }
74    
75    
76 pjm2 1.28 # show all disk information.
77     function showDisks($diskRoot, $units, $input) {
78     include("latest_config.inc.php");
79    
80     $i = 0;
81     while(1) {
82     $name = getPregMatch("$diskRoot.p$i.attributes.name", $input);
83 pjm2 1.31 $mount = getPregMatch("$diskRoot.p$i.attributes.mount", $input);
84     if ($name || $mount) {
85     $used = "$diskRoot.p$i.attributes.used";
86     $kbytes = "$diskRoot.p$i.attributes.kbytes";
87 tdb 1.42 $graph = preg_replace("/_/", "$hex_underscore", $mount);
88     $graph = preg_replace("/\//", "$hex_slash", $graph);
89 tdb 1.43 $totalinodes = getPregMatch("$diskRoot.p$i.attributes.totalinodes", $input);
90     $freeinodes = getPregMatch("$diskRoot.p$i.attributes.freeinodes", $input);
91     showBar("$name ($mount)<br>space used", $used, $kbytes, $units, $input, "disk-$graph");
92     showBar("inodes used", (int) $freeinodes, (int) $totalinodes, " inodes", $input, "", "swap");
93     print " <br><br>\n";
94 pjm2 1.28 }
95 pjm2 1.30 else {
96     break;
97     }
98 pjm2 1.28 $i++;
99     }
100     }
101    
102     # Return a preg_match result.
103     function getPregMatch($value, $input) {
104 pjm2 1.29 preg_match("/$value=([^\,\}]*)[\,\}]/", $input, $matches);
105 pjm2 1.28 return $matches[1];
106     }
107    
108    
109 pjm2 1.1 # show a bar-represented value.
110 tdb 1.42 function showBar($title, $value, $max, $units, $input, $graph="", $arrange='normal') {
111 pjm2 1.1
112     include("latest_config.inc.php");
113    
114 pjm2 1.22 $report = $value;
115 tdb 1.43 if (!is_int($value)) {
116     $value = getPregMatch($value, $input);
117     }
118 pjm2 1.1 if (!is_int($max)) {
119 pjm2 1.28 $max = getPregMatch($max, $input);
120 pjm2 1.1 }
121 tdb 1.40 if (!isset($value) || !isset($max)) {
122 pjm2 1.1 return;
123     }
124    
125 pjm2 1.26 if ($arrange == 'swap') {
126 pjm2 1.27 $value = $max - $value;
127 pjm2 1.26 }
128 pjm2 1.27
129 tdb 1.40 if(empty($max)) {
130 pjm2 1.35 $width = 1;
131 tdb 1.40 }
132     else {
133     $width = intval($max_width * $value / $max);
134     if ($width < 1) {
135     $width = 1;
136     }
137 pjm2 1.35 }
138    
139 pjm2 1.1 ?>
140 pjm2 1.10 <table border="0" cellpadding="0" cellspacing="0" align="center">
141 pjm2 1.1 <tr>
142 tdb 1.42 <td colspan="2"><? linkToHistory($graph); ?> <b><?=$title?></b> <font size="2">(<?=$value?><?=$units?>)</font></td>
143 pjm2 1.1 </tr>
144     <tr>
145     <td colspan="2" bgcolor="#eeeeff"><img src="<?=$barImage?>" border="0" height="20" width="<?=$width?>"></td>
146     </tr>
147     <tr>
148     <td colspan="2"><img src="<?=$scaleImage?>" border="0" height="11" width="<?=$max_width?>"></td>
149     </tr>
150     <tr>
151 pjm2 1.13 <td align="left">0<?=$units?></td>
152     <td align="right"><?=$max?><?=$units?></td>
153 pjm2 1.15 </tr>
154 pjm2 1.1 </table>
155     <?
156     }
157    
158    
159     ?>
160    
161     <? include($titleHTML); ?>
162    
163 pjm2 1.12 <? printLine("Display the latest information received from a host"); ?>
164 pjm2 1.1
165     <form method="<? echo $formMethod ?>" action="<? echo $thisPage ?>">
166     <?
167    
168 pjm2 1.5 $file_array = getdirArray($latestDirectory,'asort');
169 pjm2 1.1 print "<select size=\"1\" name=\"machine\">";
170     if ($machine) { ?>
171     <option selected value="<? echo $machine ?>"><? echo $machine ?></option>
172     <option value="">----------------</option>
173     <? }
174     foreach($file_array as $file_name) {
175 pjm2 1.3 #if (is_dir($file_name)) {
176 pjm2 1.1 print "<option value=\"$file_name\">$file_name</option>";
177 pjm2 1.3 #}
178 pjm2 1.1 }
179     print "</select>";
180    
181     ?>
182     <input type="submit" name="submit" value="Display">
183     </form>
184    
185     <? if ($machine) {
186    
187 pjm2 1.12 $last_modified = filemtime("$latestDirectory/$machine/$latestData");
188     clearstatcache();
189     $data_age = time() - $last_modified;
190    
191 pjm2 1.36 $last_modified = date("l jS F Y - g:ia", $last_modified);
192 pjm2 1.12
193     if ($data_age > $warning_age) {
194     $warning = <<<EOT
195     <br>
196     <font color="red"><b>
197     Warning:
198     </b></font>
199     This realtime report is too old to be considered recent
200     EOT;
201     }
202    
203     echo <<<EOT
204 pjm2 1.16 <table border="0" bgcolor="#000066" cellpadding="3" cellspacing="1">
205 pjm2 1.12 <tr>
206     <td bgcolor="#000066">
207     &nbsp;
208     </td>
209     <td bgcolor="#ffffcc">
210     <font face="arial,sans-serif" size="2">
211 pjm2 1.24 <b>Receipt date:</b> $last_modified
212 pjm2 1.12 $warning
213     </font>
214     </td>
215     </tr>
216     </table>
217     EOT;
218    
219 pjm2 1.1 # Read the file.
220 pjm2 1.25 if (file_exists("$latestDirectory/$machine/$latestData")) {
221     $input = file("$latestDirectory/$machine/$latestData");
222     # All we need is the first line if there is more than one line.
223     $input = $input[0];
224     }
225 pjm2 1.1
226 tdb 1.38 if (!isset($input)) {
227 pjm2 1.25 echo "<br><br>There are currently no latest details about <b>$machine</b>. Please notify your i-scream server administrator if you believe this to be incorrect.";
228 pjm2 1.1 }
229     else {
230     # Display the data specified in the display include.
231     include("latest_display.inc.php");
232     }
233 pjm2 1.9 }
234 pjm2 1.12
235 pjm2 1.1 ?>
236    
237 pjm2 1.16 <? printLine(""); ?>
238 pjm2 1.1
239     <? include($bottomHTML); ?>