CC-2363: Diagnostic screen in Web UI
-everything working
This commit is contained in:
parent
3a2eaecad8
commit
046f98db8f
9 changed files with 345 additions and 102 deletions
|
@ -657,13 +657,14 @@ class ApiController extends Zend_Controller_Action
|
|||
"platform"=>Application_Model_Systemstatus::GetPlatformInfo(),
|
||||
"airtime_version"=>Application_Model_Systemstatus::GetAirtimeVersion(),
|
||||
"services"=>array(
|
||||
Application_Model_Systemstatus::GetIcecastStatus(),
|
||||
Application_Model_Systemstatus::GetRabbitMqStatus(),
|
||||
Application_Model_Systemstatus::GetPypoStatus(),
|
||||
Application_Model_Systemstatus::GetLiquidsoapStatus(),
|
||||
Application_Model_Systemstatus::GetShowRecorderStatus(),
|
||||
Application_Model_Systemstatus::GetMediaMonitorStatus()
|
||||
)
|
||||
"icecast2"=>Application_Model_Systemstatus::GetIcecastStatus(),
|
||||
"rabbitmq"=>Application_Model_Systemstatus::GetRabbitMqStatus(),
|
||||
"pypo"=>Application_Model_Systemstatus::GetPypoStatus(),
|
||||
"liquidsoap"=>Application_Model_Systemstatus::GetLiquidsoapStatus(),
|
||||
"show_recorder"=>Application_Model_Systemstatus::GetShowRecorderStatus(),
|
||||
"media_monitor"=>Application_Model_Systemstatus::GetMediaMonitorStatus()
|
||||
),
|
||||
"partitions"=>Application_Model_Systemstatus::GetDiskInfo()
|
||||
);
|
||||
|
||||
$this->view->status = $status;
|
||||
|
|
|
@ -8,11 +8,12 @@ class SystemstatusController extends Zend_Controller_Action
|
|||
$baseUrl = $request->getBaseUrl();
|
||||
|
||||
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/status/status.js','text/javascript');
|
||||
$this->view->headScript()->appendFile($baseUrl.'/js/sprintf/sprintf-0.7-beta1.js','text/javascript');
|
||||
}
|
||||
|
||||
public function indexAction()
|
||||
{
|
||||
$status = array(
|
||||
$services = array(
|
||||
"pypo"=>Application_Model_Systemstatus::GetPypoStatus(),
|
||||
"liquidsoap"=>Application_Model_Systemstatus::GetLiquidsoapStatus(),
|
||||
"show-recorder"=>Application_Model_Systemstatus::GetShowRecorderStatus(),
|
||||
|
@ -21,7 +22,12 @@ class SystemstatusController extends Zend_Controller_Action
|
|||
"icecast2"=>Application_Model_Systemstatus::GetIcecastStatus()
|
||||
);
|
||||
|
||||
$this->view->status = $status;
|
||||
$partitions = Application_Model_Systemstatus::GetDiskInfo();
|
||||
|
||||
$this->view->status = new StdClass;
|
||||
$this->view->status->services = $services;
|
||||
$this->view->status->partitions = $partitions;
|
||||
|
||||
}
|
||||
|
||||
public function getLogFileAction()
|
||||
|
|
|
@ -222,8 +222,7 @@ class MusicDir {
|
|||
->find();
|
||||
|
||||
foreach($dirs as $dir) {
|
||||
$tmp = new MusicDir($dir);
|
||||
$result[] = $tmp;
|
||||
$result[] = new MusicDir($dir);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
|
|
@ -14,10 +14,14 @@ class Application_Model_Systemstatus
|
|||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
$docRoot = null;
|
||||
if ($result != ""){
|
||||
$xmlDoc = new DOMDocument();
|
||||
$xmlDoc->loadXML($result);
|
||||
$docRoot = $xmlDoc->documentElement;
|
||||
}
|
||||
|
||||
return $xmlDoc->documentElement;
|
||||
return $docRoot;
|
||||
}
|
||||
|
||||
public static function ExtractServiceInformation($p_docRoot, $p_serviceName){
|
||||
|
@ -25,20 +29,20 @@ class Application_Model_Systemstatus
|
|||
$starting = array(
|
||||
"name"=>"",
|
||||
"process_id"=>"STARTING...",
|
||||
"uptime_seconds"=>"STARTING...",
|
||||
"uptime_seconds"=>"-1",
|
||||
"status"=>true,
|
||||
"memory_perc"=>"UNKNOWN",
|
||||
"memory_kb"=>"UNKNOWN",
|
||||
"cpu_perc"=>"UNKNOWN");
|
||||
"memory_perc"=>"0%",
|
||||
"memory_kb"=>"0",
|
||||
"cpu_perc"=>"0%");
|
||||
|
||||
$notRunning = array(
|
||||
"name"=>"",
|
||||
"name"=>$p_serviceName,
|
||||
"process_id"=>"FAILED",
|
||||
"uptime_seconds"=>"FAILED",
|
||||
"uptime_seconds"=>"-1",
|
||||
"status"=>false,
|
||||
"memory_perc"=>"UNKNOWN",
|
||||
"memory_kb"=>"UNKNOWN",
|
||||
"cpu_perc"=>"UNKNOWN"
|
||||
"memory_perc"=>"0%",
|
||||
"memory_kb"=>"0",
|
||||
"cpu_perc"=>"0%"
|
||||
);
|
||||
$data = $notRunning;
|
||||
|
||||
|
@ -174,6 +178,32 @@ class Application_Model_Systemstatus
|
|||
public static function GetAirtimeVersion(){
|
||||
return AIRTIME_VERSION;
|
||||
}
|
||||
|
||||
public static function GetDiskInfo(){
|
||||
/* First lets get all the watched directories. Then we can group them
|
||||
* into the same paritions by comparing the partition sizes. */
|
||||
$musicDirs = MusicDir::getWatchedDirs();
|
||||
$musicDirs[] = MusicDir::getStorDir();
|
||||
|
||||
|
||||
$partions = array();
|
||||
|
||||
foreach($musicDirs as $md){
|
||||
$totalSpace = disk_total_space($md->getDirectory());
|
||||
|
||||
if (!isset($partitions[$totalSpace])){
|
||||
$partitions[$totalSpace] = new StdClass;
|
||||
$partitions[$totalSpace]->totalSpace = $totalSpace;
|
||||
$partitions[$totalSpace]->totalFreeSpace = disk_free_space($md->getDirectory());
|
||||
}
|
||||
|
||||
$partitions[$totalSpace]->dirs[] = $md->getDirectory();
|
||||
}
|
||||
|
||||
return array_values($partitions);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
|
||||
|
|
|
@ -1,23 +1,11 @@
|
|||
<!--
|
||||
<?php foreach($this->status as $key=>$value): ?>
|
||||
<div>
|
||||
<?php echo $key; ?>
|
||||
<?php echo "PID: ".$value["process_id"]; ?>
|
||||
<?php echo "UPTIME: ".$value["uptime_seconds"]; ?>
|
||||
|
||||
<?php if (true): ?>
|
||||
<a href="systemstatus/get-log-file/id/<?php echo $key ?>">Log file</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
-->
|
||||
|
||||
<table width="60%" cellpadding="0" cellspacing="0" border="0" class="statustable">
|
||||
<thead>
|
||||
<tr class="ui-state-default strong">
|
||||
<td>Service</td>
|
||||
<td>Status</td>
|
||||
<td>Uptime</td>
|
||||
<td>CPU</td>
|
||||
<td>Memory</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -29,46 +17,17 @@
|
|||
</tr>
|
||||
-->
|
||||
<?php $i=0; ?>
|
||||
<?php foreach($this->status as $key=>$value): ?>
|
||||
<?php foreach($this->status->services as $key=>$value): ?>
|
||||
<tr class="<?php echo ($i&1) == 0 ? "even":"odd"; $i++; ?>" id="<?php echo $value["name"]; ?>">
|
||||
<td><?php echo $value["name"]; ?></td>
|
||||
<td><span class="<?php echo $value["status"] ? "checked-icon" : "not-available-icon" ?>"> </span></td>
|
||||
<td><?php echo $value["uptime_seconds"]; ?></td>
|
||||
<td><span></span></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr class="even">
|
||||
<th colspan="3">Disk Space</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="strong">Disk #1</span> (/dev/sda)
|
||||
<ul>
|
||||
<li>/home/bob</li>
|
||||
<li>/srv/airtime/stor</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>12GB of 128GB</td>
|
||||
<td>
|
||||
<div class="big">
|
||||
<div class="diskspace" style="width:10%;">
|
||||
</div>
|
||||
</div>
|
||||
<div>10% in use</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="strong">Disk #2</span> (/dev/sdb)
|
||||
<ul>
|
||||
<li>/home/external/audio</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>90GB of 450GB</td>
|
||||
<td>
|
||||
<div class="big">
|
||||
<div class="diskspace" style="width:20%;">
|
||||
</div>
|
||||
</div>
|
||||
<div>20% in use</div>
|
||||
</td>
|
||||
<tr id="partitions" class="even">
|
||||
<th colspan="5">Disk Space</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -11,6 +11,23 @@ function popup(mylink){
|
|||
return false;
|
||||
}
|
||||
|
||||
function convertSecondsToDaysHoursMinutesSeconds(seconds){
|
||||
if (seconds < 0)
|
||||
seconds = 0;
|
||||
|
||||
seconds = parseInt(seconds, 10);
|
||||
|
||||
var days = parseInt(seconds / 86400);
|
||||
seconds -= days*86400;
|
||||
|
||||
var hours = parseInt(seconds / 3600);
|
||||
seconds -= hours*3600;
|
||||
|
||||
var minutes = parseInt(seconds / 60);
|
||||
seconds -= minutes*60;
|
||||
|
||||
return {days:days, hours:hours, minutes:minutes, seconds:seconds};
|
||||
}
|
||||
|
||||
/* Takes an input parameter of milliseconds and converts these into
|
||||
* the format HH:MM:SS */
|
||||
|
|
|
@ -1,12 +1,60 @@
|
|||
function generatePartitions(partitions){
|
||||
|
||||
var rowTemplate =
|
||||
'<tr class="partition-info">'+
|
||||
'<td><span class="strong">Disk #%s</span>'+
|
||||
'<ul id="watched-dir-list-%s">'+
|
||||
'</ul>'+
|
||||
'</td>'+
|
||||
'<td>%sGB of %sGB</td>'+
|
||||
'<td colspan="3">'+
|
||||
'<div class="big">'+
|
||||
'<div class="diskspace" style="width:%s%%;">'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'<div>%s%% in use</div>'+
|
||||
'</td>'+
|
||||
'</tr>';
|
||||
|
||||
$(".partition-info").remove();
|
||||
var lastElement = $('#partitions');
|
||||
for (var i=0; i<partitions.length; i++){
|
||||
var spaceUsed = partitions[i].totalSpace-partitions[i].totalFreeSpace;
|
||||
var totalSpace = partitions[i].totalSpace;
|
||||
var percUsed = sprintf("%01.1f", spaceUsed/totalSpace*100);
|
||||
|
||||
var spaceUsedGb = sprintf("%01.1f", spaceUsed/Math.pow(10, 9));
|
||||
var totalSpaceGb = sprintf("%01.1f", totalSpace/Math.pow(10, 9));
|
||||
|
||||
var row = sprintf(rowTemplate, i, i, spaceUsedGb, totalSpaceGb, percUsed, percUsed);
|
||||
var tr = $(row);
|
||||
lastElement.after(tr);
|
||||
|
||||
var watched_dirs_ul = $('#watched-dir-list-'+i);
|
||||
for (var j=0; j<partitions[i].dirs.length; j++){
|
||||
watched_dirs_ul.append('<li>'+partitions[i].dirs[j]+'</li>');
|
||||
}
|
||||
lastElement = tr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function success(data, textStatus, jqXHR){
|
||||
var services = data.status.services;
|
||||
|
||||
for (var i=0; i<services.length; i++){
|
||||
var children = $("#"+services[i].name).children();
|
||||
console.log(services[i].status);
|
||||
$($(children[1]).children()[0]).attr("class", services[i].status ? "checked-icon": "not-available-icon");
|
||||
$(children[2]).text(services[i].uptime_seconds);
|
||||
console.log(data.status);
|
||||
|
||||
for (var key in services){
|
||||
var s = services[key];
|
||||
var children = $("#"+s.name).children();
|
||||
$(children[0]).text(s.name);
|
||||
$($(children[1]).children()[0]).attr("class", s.status ? "checked-icon": "not-available-icon");
|
||||
$(children[2]).text(sprintf('%(days)sd %(hours)sh %(minutes)sm %(seconds)ss', convertSecondsToDaysHoursMinutesSeconds(s.uptime_seconds)));
|
||||
$(children[3]).text(s.cpu_perc);
|
||||
$(children[4]).text(sprintf('%01.1fMB (%s)', parseInt(s.memory_kb)/1000, s.memory_perc));
|
||||
}
|
||||
|
||||
generatePartitions(data.status.partitions);
|
||||
}
|
||||
|
||||
function updateStatus(){
|
||||
|
|
183
airtime_mvc/public/js/sprintf/sprintf-0.7-beta1.js
Normal file
183
airtime_mvc/public/js/sprintf/sprintf-0.7-beta1.js
Normal file
|
@ -0,0 +1,183 @@
|
|||
/**
|
||||
sprintf() for JavaScript 0.7-beta1
|
||||
http://www.diveintojavascript.com/projects/javascript-sprintf
|
||||
|
||||
Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of sprintf() for JavaScript nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
Changelog:
|
||||
2010.09.06 - 0.7-beta1
|
||||
- features: vsprintf, support for named placeholders
|
||||
- enhancements: format cache, reduced global namespace pollution
|
||||
|
||||
2010.05.22 - 0.6:
|
||||
- reverted to 0.4 and fixed the bug regarding the sign of the number 0
|
||||
Note:
|
||||
Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
|
||||
who warned me about a bug in 0.5, I discovered that the last update was
|
||||
a regress. I appologize for that.
|
||||
|
||||
2010.05.09 - 0.5:
|
||||
- bug fix: 0 is now preceeded with a + sign
|
||||
- bug fix: the sign was not at the right position on padded results (Kamal Abdali)
|
||||
- switched from GPL to BSD license
|
||||
|
||||
2007.10.21 - 0.4:
|
||||
- unit test and patch (David Baird)
|
||||
|
||||
2007.09.17 - 0.3:
|
||||
- bug fix: no longer throws exception on empty paramenters (Hans Pufal)
|
||||
|
||||
2007.09.11 - 0.2:
|
||||
- feature: added argument swapping
|
||||
|
||||
2007.04.03 - 0.1:
|
||||
- initial release
|
||||
**/
|
||||
|
||||
var sprintf = (function() {
|
||||
function get_type(variable) {
|
||||
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
|
||||
}
|
||||
function str_repeat(input, multiplier) {
|
||||
for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
|
||||
return output.join('');
|
||||
}
|
||||
|
||||
var str_format = function() {
|
||||
if (!str_format.cache.hasOwnProperty(arguments[0])) {
|
||||
str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
|
||||
}
|
||||
return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
|
||||
};
|
||||
|
||||
str_format.format = function(parse_tree, argv) {
|
||||
var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
|
||||
for (i = 0; i < tree_length; i++) {
|
||||
node_type = get_type(parse_tree[i]);
|
||||
if (node_type === 'string') {
|
||||
output.push(parse_tree[i]);
|
||||
}
|
||||
else if (node_type === 'array') {
|
||||
match = parse_tree[i]; // convenience purposes only
|
||||
if (match[2]) { // keyword argument
|
||||
arg = argv[cursor];
|
||||
for (k = 0; k < match[2].length; k++) {
|
||||
if (!arg.hasOwnProperty(match[2][k])) {
|
||||
throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
|
||||
}
|
||||
arg = arg[match[2][k]];
|
||||
}
|
||||
}
|
||||
else if (match[1]) { // positional argument (explicit)
|
||||
arg = argv[match[1]];
|
||||
}
|
||||
else { // positional argument (implicit)
|
||||
arg = argv[cursor++];
|
||||
}
|
||||
|
||||
if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
|
||||
throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
|
||||
}
|
||||
switch (match[8]) {
|
||||
case 'b': arg = arg.toString(2); break;
|
||||
case 'c': arg = String.fromCharCode(arg); break;
|
||||
case 'd': arg = parseInt(arg, 10); break;
|
||||
case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
|
||||
case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
|
||||
case 'o': arg = arg.toString(8); break;
|
||||
case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
|
||||
case 'u': arg = Math.abs(arg); break;
|
||||
case 'x': arg = arg.toString(16); break;
|
||||
case 'X': arg = arg.toString(16).toUpperCase(); break;
|
||||
}
|
||||
arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
|
||||
pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
|
||||
pad_length = match[6] - String(arg).length;
|
||||
pad = match[6] ? str_repeat(pad_character, pad_length) : '';
|
||||
output.push(match[5] ? arg + pad : pad + arg);
|
||||
}
|
||||
}
|
||||
return output.join('');
|
||||
};
|
||||
|
||||
str_format.cache = {};
|
||||
|
||||
str_format.parse = function(fmt) {
|
||||
var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
|
||||
while (_fmt) {
|
||||
if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
|
||||
parse_tree.push(match[0]);
|
||||
}
|
||||
else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
|
||||
parse_tree.push('%');
|
||||
}
|
||||
else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
|
||||
if (match[2]) {
|
||||
arg_names |= 1;
|
||||
var field_list = [], replacement_field = match[2], field_match = [];
|
||||
if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
|
||||
field_list.push(field_match[1]);
|
||||
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
|
||||
if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
|
||||
field_list.push(field_match[1]);
|
||||
}
|
||||
else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
|
||||
field_list.push(field_match[1]);
|
||||
}
|
||||
else {
|
||||
throw('[sprintf] huh?');
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw('[sprintf] huh?');
|
||||
}
|
||||
match[2] = field_list;
|
||||
}
|
||||
else {
|
||||
arg_names |= 2;
|
||||
}
|
||||
if (arg_names === 3) {
|
||||
throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
|
||||
}
|
||||
parse_tree.push(match);
|
||||
}
|
||||
else {
|
||||
throw('[sprintf] huh?');
|
||||
}
|
||||
_fmt = _fmt.substring(match[0].length);
|
||||
}
|
||||
return parse_tree;
|
||||
};
|
||||
|
||||
return str_format;
|
||||
})();
|
||||
|
||||
var vsprintf = function(fmt, argv) {
|
||||
argv.unshift(fmt);
|
||||
return sprintf.apply(null, argv);
|
||||
};
|
|
@ -69,30 +69,30 @@ class AirtimeCheck {
|
|||
self::output_status("TOTAL_MEMORY_MBYTES", $p_status->platform->memory);
|
||||
self::output_status("TOTAL_SWAP_MBYTES", $p_status->platform->swap);
|
||||
self::output_status("AIRTIME_VERSION", $p_status->airtime_version);
|
||||
self::output_status("PLAYOUT_ENGINE_PROCESS_ID", $p_status->pypo->process_id);
|
||||
self::output_status("PLAYOUT_ENGINE_RUNNING_SECONDS", $p_status->pypo->uptime_seconds);
|
||||
self::output_status("PLAYOUT_ENGINE_MEM_PERC", $p_status->pypo->memory_perc);
|
||||
self::output_status("PLAYOUT_ENGINE_CPU_PERC", $p_status->pypo->cpu_perc);
|
||||
self::output_status("LIQUIDSOAP_PROCESS_ID", $p_status->liquidsoap->process_id);
|
||||
self::output_status("LIQUIDSOAP_RUNNING_SECONDS", $p_status->liquidsoap->uptime_seconds);
|
||||
self::output_status("LIQUIDSOAP_MEM_PERC", $p_status->liquidsoap->memory_perc);
|
||||
self::output_status("LIQUIDSOAP_CPU_PERC", $p_status->liquidsoap->cpu_perc);
|
||||
self::output_status("MEDIA_MONITOR_PROCESS_ID", $p_status->media_monitor->process_id);
|
||||
self::output_status("MEDIA_MONITOR_RUNNING_SECONDS", $p_status->media_monitor->uptime_seconds);
|
||||
self::output_status("MEDIA_MONITOR_MEM_PERC", $p_status->media_monitor->memory_perc);
|
||||
self::output_status("MEDIA_MONITOR_CPU_PERC", $p_status->media_monitor->cpu_perc);
|
||||
self::output_status("SHOW_RECORDER_PROCESS_ID", $p_status->show_recorder->process_id);
|
||||
self::output_status("SHOW_RECORDER_RUNNING_SECONDS", $p_status->show_recorder->uptime_seconds);
|
||||
self::output_status("SHOW_RECORDER_MEM_PERC", $p_status->show_recorder->memory_perc);
|
||||
self::output_status("SHOW_RECORDER_CPU_PERC", $p_status->show_recorder->cpu_perc);
|
||||
self::output_status("ICECAST_PROCESS_ID", $p_status->icecast2->process_id);
|
||||
self::output_status("ICECAST_RUNNING_SECONDS", $p_status->icecast2->uptime_seconds);
|
||||
self::output_status("ICECAST_MEM_PERC", $p_status->icecast2->memory_perc);
|
||||
self::output_status("ICECAST_CPU_PERC", $p_status->icecast2->cpu_perc);
|
||||
self::output_status("RABBITMQ_PROCESS_ID", $p_status->rabbitmq->process_id);
|
||||
self::output_status("RABBITMQ_RUNNING_SECONDS", $p_status->rabbitmq->uptime_seconds);
|
||||
self::output_status("RABBITMQ_MEM_PERC", $p_status->rabbitmq->memory_perc);
|
||||
self::output_status("RABBITMQ_CPU_PERC", $p_status->rabbitmq->cpu_perc);
|
||||
self::output_status("PLAYOUT_ENGINE_PROCESS_ID", $p_status->services->pypo->process_id);
|
||||
self::output_status("PLAYOUT_ENGINE_RUNNING_SECONDS", $p_status->services->pypo->uptime_seconds);
|
||||
self::output_status("PLAYOUT_ENGINE_MEM_PERC", $p_status->services->pypo->memory_perc);
|
||||
self::output_status("PLAYOUT_ENGINE_CPU_PERC", $p_status->services->pypo->cpu_perc);
|
||||
self::output_status("LIQUIDSOAP_PROCESS_ID", $p_status->services->liquidsoap->process_id);
|
||||
self::output_status("LIQUIDSOAP_RUNNING_SECONDS", $p_status->services->liquidsoap->uptime_seconds);
|
||||
self::output_status("LIQUIDSOAP_MEM_PERC", $p_status->services->liquidsoap->memory_perc);
|
||||
self::output_status("LIQUIDSOAP_CPU_PERC", $p_status->services->liquidsoap->cpu_perc);
|
||||
self::output_status("MEDIA_MONITOR_PROCESS_ID", $p_status->services->media_monitor->process_id);
|
||||
self::output_status("MEDIA_MONITOR_RUNNING_SECONDS", $p_status->services->media_monitor->uptime_seconds);
|
||||
self::output_status("MEDIA_MONITOR_MEM_PERC", $p_status->services->media_monitor->memory_perc);
|
||||
self::output_status("MEDIA_MONITOR_CPU_PERC", $p_status->services->media_monitor->cpu_perc);
|
||||
self::output_status("SHOW_RECORDER_PROCESS_ID", $p_status->services->show_recorder->process_id);
|
||||
self::output_status("SHOW_RECORDER_RUNNING_SECONDS", $p_status->services->show_recorder->uptime_seconds);
|
||||
self::output_status("SHOW_RECORDER_MEM_PERC", $p_status->services->show_recorder->memory_perc);
|
||||
self::output_status("SHOW_RECORDER_CPU_PERC", $p_status->services->show_recorder->cpu_perc);
|
||||
self::output_status("ICECAST_PROCESS_ID", $p_status->services->icecast2->process_id);
|
||||
self::output_status("ICECAST_RUNNING_SECONDS", $p_status->services->icecast2->uptime_seconds);
|
||||
self::output_status("ICECAST_MEM_PERC", $p_status->services->icecast2->memory_perc);
|
||||
self::output_status("ICECAST_CPU_PERC", $p_status->services->icecast2->cpu_perc);
|
||||
self::output_status("RABBITMQ_PROCESS_ID", $p_status->services->rabbitmq->process_id);
|
||||
self::output_status("RABBITMQ_RUNNING_SECONDS", $p_status->services->rabbitmq->uptime_seconds);
|
||||
self::output_status("RABBITMQ_MEM_PERC", $p_status->services->rabbitmq->memory_perc);
|
||||
self::output_status("RABBITMQ_CPU_PERC", $p_status->services->rabbitmq->cpu_perc);
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue