the code for "lsevent" and "monshow" are committed;
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4088 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
298ac895e0
commit
a6d273efcc
@ -328,6 +328,41 @@ padding:10px 2px;
|
||||
/*display: none;*/
|
||||
}
|
||||
|
||||
#rmc_tree {
|
||||
float: left;
|
||||
width: auto;
|
||||
min-height: 255px;
|
||||
border-right: 1px dotted #555;
|
||||
min-width: 130px;
|
||||
/*display: none;*/
|
||||
}
|
||||
|
||||
#rmc_monshow {
|
||||
float: left;
|
||||
width: 701px; /*need update*/
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#mon_keys {
|
||||
float: left;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#monshow_opt {
|
||||
float: left;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#monshow_data {
|
||||
float: left;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#tips {
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
@ -422,11 +457,20 @@ padding:10px 2px;
|
||||
|
||||
#options {
|
||||
width: 880px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#monconfig {
|
||||
width: 48%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#monview {
|
||||
width: 48%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#plugin_desc {
|
||||
width: 880px;
|
||||
margin: 5px;
|
||||
|
@ -328,7 +328,8 @@ function changeProf(){
|
||||
// debug this. If you do, please make this code easier to read.
|
||||
}
|
||||
|
||||
//added for display the tree for
|
||||
//added for display the tree
|
||||
// TODO: there're still issues here.
|
||||
function init_ositree(){
|
||||
//display all the nodes with OSI type
|
||||
nrtree = new tree_component(); //-tree begin
|
||||
@ -343,6 +344,45 @@ function init_ositree(){
|
||||
});
|
||||
}
|
||||
|
||||
//function updatermcnr()
|
||||
//{
|
||||
// myselection = nrtree.selected_arr;
|
||||
//
|
||||
// for (node in myselection) {
|
||||
// $("#rmc_monshow").html($("#rmc_monshow").html()+node);
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
//update the osi tree used in
|
||||
function init_rmc_ositree() {
|
||||
nrtree = new tree_component(); //-tree begin
|
||||
nrtree.init($("#rmc_tree"),{
|
||||
rules: { multiple: "Ctrl" },
|
||||
ui: { animation: 250 },
|
||||
callback: {
|
||||
onchange: function(n) {
|
||||
if(n.id) {
|
||||
if($(n).parent().parent().attr("id") == ",lpar") {
|
||||
//parse the id, then display the "monshow" data for selected noderange
|
||||
$.get("monitor/rmc_monshow_attr_source.php", {id: n.id}, function(data) {
|
||||
//display the "monshow" result
|
||||
$("#monshow_opt").html(data);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//http://jstree.com/reference/_examples/3_callbacks.html
|
||||
//onchange is used to
|
||||
data : {
|
||||
type: "json",
|
||||
async: "true",
|
||||
url: "monitor/rmc_source.php"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//node_stat_control() can enable/disable nodestatmon for the selected plugin
|
||||
function node_stat_control(plugin)
|
||||
{
|
||||
@ -467,7 +507,22 @@ function monsetupAction(plugin, action_val)
|
||||
|
||||
});
|
||||
}
|
||||
function show_monshow_data() {
|
||||
//used for the OK button in the web page "rmc_monshow.php";
|
||||
$("#monshow_opt").hide("slow");
|
||||
$(":input[@checked]").each(function(i) {
|
||||
$.get("monitor/rmc_monshow_data_source.php", {value: $(this).attr("value")}, function(data) {
|
||||
$("#monshow_data").append(data);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function rmc_monshow_back_to_opts() {
|
||||
//clear the <div id='monshow_data'>
|
||||
//and, display <div id='monshow_opts'>
|
||||
$("#monshow_data").empty();
|
||||
$("#monshow_opt").show("slow");
|
||||
}
|
||||
|
||||
// load progress bar
|
||||
myBar.loaded('xcat.js');
|
||||
|
@ -134,7 +134,7 @@ TOS2;
|
||||
echo '<tr class="ListLine1">';
|
||||
echo '<td>Application Status Monitoring</td>';
|
||||
echo '<td>';
|
||||
insertbuttons(array('label'=>$as_tobe, 'id'=>'app_stat', 'onclick'=>''));
|
||||
insertButtons(array('label'=>$as_tobe, 'id'=>'app_stat', 'onclick'=>'show_monshow_data()'));
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
echo '</tbody> </table> </div>';
|
||||
@ -393,4 +393,89 @@ function displayRMCAttr()
|
||||
echo "<p>Select the RMC Resource, you will see all its available attributes here.</p>";
|
||||
}
|
||||
|
||||
|
||||
function RMCEventLogToTable()
|
||||
{
|
||||
$xml = docmd("webrun", "", array("lsevent"));
|
||||
|
||||
|
||||
//var_dump($xml);
|
||||
foreach($xml->children() as $response) foreach($response->children() as $records)
|
||||
{
|
||||
//$data should be one array to store all the RMC event log.
|
||||
echo "<tr>";
|
||||
foreach($records->children() as $data) {
|
||||
echo "<td>$data</td>";
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
}
|
||||
//displayRMCEventLog() to display the RMC event logs in one table with "tablesorter" class
|
||||
function displayRMCEvnetLog()
|
||||
{
|
||||
echo <<<TOS9
|
||||
<table class="tablesorter" cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Time</th>
|
||||
<th>Category</th>
|
||||
<th>Message</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
TOS9;
|
||||
RMCEventLogToTable();
|
||||
echo "</tbody></table>";
|
||||
//TODO: the following javascript doesn't work well.
|
||||
echo <<<TOS8
|
||||
<script type="text/javascript" type"utf-8">
|
||||
$("table").tablesorter({ sortList: [[0,1],[1,1]] });
|
||||
</script>
|
||||
TOS8;
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
function displayRMCMonshowAttr($attr) {
|
||||
//TODO: should add one argument to support the noderange argument
|
||||
echo "<div>";
|
||||
echo "<table class='tablesorter' cellspacing='1'>";
|
||||
echo "<thead>";
|
||||
echo "<tr>";
|
||||
echo "<td>Time</td>";
|
||||
echo "<td>$attr</td>";
|
||||
echo "</tr>";
|
||||
echo "</thead>";
|
||||
echo "<tbody>";
|
||||
|
||||
//get all the data by the command "monshow"
|
||||
$xml = docmd("monshow", "", array("rmcmon", "-s", "-t", "10", "-a", "$attr"));
|
||||
//the error handling is skipped
|
||||
$index = 0;
|
||||
foreach($xml->children() as $response) foreach($response->children() as $data) {
|
||||
//handle the data here
|
||||
//skip the first 3 lines
|
||||
if($index++ < 3) {
|
||||
continue;
|
||||
}
|
||||
echo "<tr>";
|
||||
$elements = explode(" ", $data);
|
||||
echo "<td>";
|
||||
$i = 0;
|
||||
while($i < 7) {
|
||||
echo $elements[$i],"\t";
|
||||
$i++;
|
||||
}
|
||||
echo "</td>";
|
||||
echo "<td>$elements[7]</td>";
|
||||
//var_dump($elements);
|
||||
echo "</tr>";
|
||||
|
||||
|
||||
}
|
||||
|
||||
echo "</tbody>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
@ -4,7 +4,6 @@ if(!isset($TOPDIR)) { $TOPDIR="..";}
|
||||
require_once "$TOPDIR/lib/functions.php";
|
||||
require_once "$TOPDIR/lib/display.php";
|
||||
require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
?>
|
||||
|
||||
<?php
|
||||
@ -20,5 +19,4 @@ insertDiv("plugin_desc");
|
||||
|
||||
insertDiv("options");
|
||||
|
||||
insetDiv("view"); //display options to the users for viewing event log & performance in text/graphics format
|
||||
?>
|
@ -9,6 +9,7 @@ require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
$name = $_REQUEST['name'];
|
||||
|
||||
echo "<div id='monconfig'>";
|
||||
echo "<p>Available Configurations for <b>$name</b></p>";
|
||||
|
||||
echo '<table id="tabTable" class="tabTable" cellspacing="1">';
|
||||
@ -49,4 +50,41 @@ if($name == "rmcmon") {
|
||||
}
|
||||
|
||||
echo "</tbody></table>";
|
||||
|
||||
echo "</div>";
|
||||
|
||||
echo "<div id='monview'>";
|
||||
echo "<p>View Options for <b>$name</b></p>";
|
||||
//there should be many choices for the user to view the clusters' status
|
||||
echo <<<TOS1
|
||||
<table id="view_tab" class="tabTable" cellspacing="1">
|
||||
<thead>
|
||||
<tr class='colHeaders'>
|
||||
<td>Monitor Items</td>
|
||||
<td>Display Formats</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
TOS1;
|
||||
if($name == "rmcmon") {
|
||||
#display two rows, one for RMC event, another for RMC Resource Performance monitoring.
|
||||
echo "<tr class='ListLine0' id='row0'>";
|
||||
echo "<td>RMC Event Logs</td>";
|
||||
echo "<td>";
|
||||
insertButtons(array('label'=>'View in Text', 'id'=>'rmc_event_text', 'onclick'=>'loadMainPage("monitor/rmc_lsevent.php")'));
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "<tr class='ListLine1' id='row1'>";
|
||||
echo "<td>RMC Resource Logs</td>";
|
||||
echo "<td>";
|
||||
insertButtons(array('label'=>'View in Text', 'id'=>'rmc_resrc_text', 'onclick'=>'loadMainPage("monitor/rmc_monshow.php")'));
|
||||
insertButtons(array('label'=>'View in Graphics', 'id'=>'rmc_resrc_graph', 'onclick'=>''));
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
else {
|
||||
echo "<p>There's no view functions for $name.</p>";
|
||||
}
|
||||
|
||||
echo "</tbody></table></div>";
|
||||
?>
|
||||
|
@ -17,9 +17,14 @@ $name = $_REQUEST['name'];
|
||||
|
||||
displayMapper(array('home'=>'main.php', 'monitor' =>''));
|
||||
|
||||
displayTips(array(""));
|
||||
displayTips(array("View all RMC events here","TODO"));
|
||||
|
||||
//Following the "Syslog Entries" web page
|
||||
echo '<div class="mContent">';
|
||||
|
||||
displayRMCEvnetLog();
|
||||
|
||||
echo '</div>';
|
||||
displayStatus();
|
||||
|
||||
insertButtons(array('label' => 'Next', 'id'=> 'next', 'onclick'=>''));
|
||||
|
31
xCAT-UI/monitor/rmc_monshow.php
Normal file
31
xCAT-UI/monitor/rmc_monshow.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/*
|
||||
* use the xCAT command "monshow" to display the current status for RMC Resources being monitored
|
||||
*/
|
||||
|
||||
if(!isset($TOPDIR)) { $TOPDIR="..";}
|
||||
require_once "$TOPDIR/lib/security.php";
|
||||
require_once "$TOPDIR/lib/functions.php";
|
||||
require_once "$TOPDIR/lib/display.php";
|
||||
require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
displayMapper(array('home'=>'main.php', 'monitor' =>''));
|
||||
|
||||
displayTips(array("Select the domain: the whole cluser or the compute nodes under \"<b>lpar</b>\",","then select the desired attributes. click the \"OK\" button"));
|
||||
|
||||
insertDiv("rmc_tree");
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(init_rmc_ositree());
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
echo "<div id='rmc_monshow'>";
|
||||
echo "<div id='monshow_opt'></div>";
|
||||
echo "<div id='monshow_data'></div>";
|
||||
echo "</div>";
|
||||
|
||||
?>
|
136
xCAT-UI/monitor/rmc_monshow_attr_source.php
Normal file
136
xCAT-UI/monitor/rmc_monshow_attr_source.php
Normal file
@ -0,0 +1,136 @@
|
||||
<?php
|
||||
if(!isset($TOPDIR)) { $TOPDIR="..";}
|
||||
|
||||
require_once "$TOPDIR/lib/security.php";
|
||||
require_once "$TOPDIR/lib/functions.php";
|
||||
require_once "$TOPDIR/lib/display.php";
|
||||
require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
//$id is the sel
|
||||
$id = $_REQUEST['id'];
|
||||
$id = preg_replace('/^,/', '', $id);
|
||||
|
||||
//TODO: now it only supports one single node
|
||||
|
||||
//check whether the node is "osi" type or not
|
||||
//using the command = webrun "lsdef -t node $id -i nodetype"
|
||||
$xml = docmd("webrun", "", array("lsdef $id -i nodetype"));
|
||||
//no error message will be returned
|
||||
|
||||
foreach($xml->children() as $response) foreach($response->children() as $data) {
|
||||
|
||||
}
|
||||
if(false !== strpos($data, "lpar")) {
|
||||
//display the options for the "monshow" command
|
||||
|
||||
show_monshow_options();
|
||||
}
|
||||
|
||||
function show_monshow_options()
|
||||
{
|
||||
echo <<<TOS0
|
||||
<b>Choose the attributes to display</b>
|
||||
TOS0;
|
||||
show_rmc_monsetting();
|
||||
echo "<div>";
|
||||
//click the "OK" button, "monshow" data for the selected attributes will display
|
||||
insertButtons(array('label'=>'OK', 'id'=>'monshow_ok_btn', 'onclick'=>'show_monshow_data()'));
|
||||
echo "</div>";
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
function show_rmc_monsetting()
|
||||
{
|
||||
echo "<div id='mon_keys'>";
|
||||
echo "<table class='tabTable' cellspacing='1'>";
|
||||
echo <<<TOS1
|
||||
<thead>
|
||||
<tr class="colHeaders">
|
||||
<td>name</td>
|
||||
<td>key</td>
|
||||
<td>value</td>
|
||||
<td>comments</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
TOS1;
|
||||
$xml = docmd("tabdump", "", array("monsetting"));
|
||||
$ooe = 0;
|
||||
$line = 0;
|
||||
foreach($xml->children() as $response) foreach($response->children() as $data)
|
||||
{
|
||||
#the var #data is one string like this:
|
||||
#"rmcmon","rmetrics_IBM.Host","PctTotalTimeIdle:1",,
|
||||
#to use "," as the splitter is wrong.
|
||||
#list($name, $key, $value,$comments, $disable) = preg_split('/,/',$data);
|
||||
if($data[0] == '#') {
|
||||
continue;
|
||||
}else {
|
||||
#parse the data
|
||||
$substr = strstr($data, "\","); #remove the $name, it is "rmcmon" now.
|
||||
$substr = substr($substr, 2);
|
||||
|
||||
$index = strpos($substr, ',');
|
||||
$key = substr($substr, 1, $index-2);
|
||||
|
||||
if(preg_match('/^rmetrics_/', $key) == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$substr = substr($substr, $index+2);
|
||||
|
||||
$index = strpos($substr, '"');
|
||||
$value = substr($substr, 0, $index);
|
||||
|
||||
$substr = substr($substr, $index+2);
|
||||
#the left string contains {$comments,$disable};
|
||||
|
||||
$index = strpos($substr, ',');
|
||||
if($index == 0) {
|
||||
#it means the $comments is empty
|
||||
$comments = '';
|
||||
} else {
|
||||
$comments = substr($substr, 1, $index -2);
|
||||
}
|
||||
$substr = substr($substr, $index+1);
|
||||
#the left string contains {$disable};
|
||||
if(strlen($substr)) {
|
||||
#not empty
|
||||
$index = strpos($substr, '"', 1);
|
||||
$disable = substr($substr, 1, $index-1);
|
||||
#the RMC key is disabled, so it's skipped
|
||||
continue;
|
||||
} else {
|
||||
$disable = '';
|
||||
}
|
||||
|
||||
#the left lines are the contents of "monsetting"
|
||||
$ooe %= 2;
|
||||
echo "<tr class='ListLine$ooe' id='row$line'>";
|
||||
echo "<td>rmcmon</td>";
|
||||
echo "<td>",substr($key, 9),"</td>";
|
||||
#parset the var $value, the format looks like this:
|
||||
# RecByteRate,$ecPacketRate:1
|
||||
#all the attributes are separated by comma,
|
||||
#the integer after ":" is the time interval
|
||||
$arr = explode(":",$value);
|
||||
$attrs = explode(",", $arr[0]);
|
||||
// echo "<td>$arr[0]</td>";
|
||||
echo "<td><form>";
|
||||
foreach ($attrs as $attr) {
|
||||
if($attr) {
|
||||
echo "<input type='checkbox' name='attr_$key' value='$attr' />$attr<br/>";
|
||||
}
|
||||
}
|
||||
echo"</form></td>";
|
||||
echo "<td>$comments</td>";
|
||||
echo "</tr>";
|
||||
|
||||
$line++;
|
||||
$ooe ++;
|
||||
}
|
||||
}
|
||||
echo "</tbody></table>";
|
||||
}
|
||||
|
||||
?>
|
19
xCAT-UI/monitor/rmc_monshow_data_source.php
Normal file
19
xCAT-UI/monitor/rmc_monshow_data_source.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
if(!isset($TOPDIR)) { $TOPDIR="..";}
|
||||
|
||||
require_once "$TOPDIR/lib/security.php";
|
||||
require_once "$TOPDIR/lib/functions.php";
|
||||
require_once "$TOPDIR/lib/display.php";
|
||||
require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
$value = $_REQUEST['value'];
|
||||
|
||||
echo "<div>";
|
||||
insertButtons(array('label'=>'Back', 'id'=>'back_btn', 'onclick'=>'rmc_monshow_back_to_opts()'));
|
||||
echo "</div>";
|
||||
displayRMCMonshowAttr($value);
|
||||
|
||||
|
||||
|
||||
?>
|
53
xCAT-UI/monitor/rmc_source.php
Normal file
53
xCAT-UI/monitor/rmc_source.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
// Gets the nodes and groups for group/node js widget
|
||||
if(!isset($TOPDIR)) { $TOPDIR="..";}
|
||||
require_once "$TOPDIR/lib/security.php";
|
||||
require_once "$TOPDIR/lib/functions.php";
|
||||
require_once "$TOPDIR/lib/display.php";
|
||||
require_once "$TOPDIR/lib/monitor_display.php";
|
||||
|
||||
require_once "$TOPDIR/js/jsonwrapper.php";
|
||||
if (isset($_GET['id'])) {
|
||||
$id = $_GET['id'];
|
||||
}
|
||||
if ($id == "0") {
|
||||
$id = '/.*';
|
||||
} else {
|
||||
$id=preg_replace('/^,/','',$id);
|
||||
}
|
||||
$rvals=docmd('extnoderange',$id,array('subgroups'));
|
||||
$parents=array();
|
||||
$root=1;
|
||||
if ($id == '/.*') {
|
||||
$id=',';
|
||||
} else {
|
||||
$parents=split("@",$id);
|
||||
$id=",$id@";
|
||||
$root=0;
|
||||
}
|
||||
//unset($rvals->xcatresponse->serverdone[0]);
|
||||
$numsubgroups=count($rvals->xcatresponse->intersectinggroups);
|
||||
$numnodes=count($rvals->xcatresponse->node);
|
||||
$jdata=array();
|
||||
if ($numnodes >= $numsubgroups) { #If there are few enough subgroups to be helpful filters, add them in
|
||||
foreach ($rvals->xcatresponse->intersectinggroups as $group) {
|
||||
if (! in_array("$group",$parents)) {
|
||||
$jdata[]= array("data"=>"$group",
|
||||
"attributes"=>array("id"=>"$id$group",
|
||||
"rel"=>'group'),
|
||||
"state"=>'closed');
|
||||
}
|
||||
|
||||
}
|
||||
} #If there were more groups than nodes, leave the signal to noise ratio down
|
||||
if ($root==0) {
|
||||
foreach ($rvals->xcatresponse->node as $node) {
|
||||
$jdata[] = array("data"=>"$node",
|
||||
"attributes"=>array("id"=>",$node",
|
||||
"rel"=>'node'));
|
||||
}
|
||||
}
|
||||
# header('Content-type: text/html');
|
||||
echo json_encode($jdata);
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user