* [task#139215,done,4h,0] optimize devops metrics.
This commit is contained in:
@@ -337,10 +337,11 @@ class cneModel extends model
|
||||
* Get instance metrics.
|
||||
*
|
||||
* @param array $instances
|
||||
* @param bool $volumesMetrics
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function instancesMetrics(array $instances): array
|
||||
public function instancesMetrics(array $instances, bool $volumesMetrics = true): array
|
||||
{
|
||||
$instancesMetrics = array();
|
||||
|
||||
@@ -369,7 +370,7 @@ class cneModel extends model
|
||||
$instanceMetric->memory->usage = 0;
|
||||
$instanceMetric->memory->rate = 0;
|
||||
|
||||
$instanceMetric->disk = $this->getVolumesMetrics($instance);
|
||||
if($volumesMetrics) $instanceMetric->disk = $this->getVolumesMetrics($instance);
|
||||
|
||||
$instancesMetrics[$instance->k8name] = $instanceMetric;
|
||||
}
|
||||
|
||||
@@ -118,10 +118,11 @@ class instanceModel extends model
|
||||
* @param string $pinned
|
||||
* @param string $searchParam
|
||||
* @param string $status
|
||||
* @param bool $alertMark
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getList(object $pager = null, string $pinned = '', string $searchParam = '', string $status = 'all')
|
||||
public function getList(object $pager, string $pinned = '', string $searchParam = '', string $status = 'all', bool $alertMark = true)
|
||||
{
|
||||
$instances = $this->dao->select('instance.*')->from(TABLE_INSTANCE)->alias('instance')
|
||||
->leftJoin(TABLE_SPACE)->alias('space')->on('space.id=instance.space')
|
||||
@@ -133,6 +134,8 @@ class instanceModel extends model
|
||||
->beginIF($pager)->page($pager)->fi()
|
||||
->fetchAll('id', false);
|
||||
|
||||
if(empty($instances)) return array();
|
||||
|
||||
$spaces = $this->dao->select('*')->from(TABLE_SPACE)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('id')->in(helper::arrayColumn($instances, 'space'))
|
||||
|
||||
@@ -122,7 +122,9 @@ class spaceModel extends model
|
||||
->page($pager)
|
||||
->fetchAll('id', false);
|
||||
|
||||
$instances = $this->loadModel('store')->batchSetLatestVersions($instances);
|
||||
if(empty($instances)) return array();
|
||||
|
||||
if($this->config->inQuickon) $instances = $this->loadModel('store')->batchSetLatestVersions($instances);
|
||||
|
||||
$solutionIDList = helper::arrayColumn($instances, 'solution');
|
||||
$solutions = $this->dao->select('*')->from(TABLE_SOLUTION)->where('id')->in($solutionIDList)->fetchAll('id');
|
||||
|
||||
@@ -31,8 +31,8 @@ class system extends control
|
||||
$this->app->loadClass('pager', true);
|
||||
$pager = new pager($total, $recPerPage, $pageID);
|
||||
|
||||
$instances = $this->loadModel('instance')->getList($pager, '', '', 'running');
|
||||
$instancesMetrics = $this->cne->instancesMetrics($instances);
|
||||
$instances = $this->loadModel('instance')->getList($pager, '', '', 'running', false);
|
||||
$instancesMetrics = $this->cne->instancesMetrics($instances, false);
|
||||
|
||||
foreach($instances as &$instance)
|
||||
{
|
||||
@@ -42,14 +42,10 @@ class system extends control
|
||||
}
|
||||
|
||||
$actions = $this->loadModel('action')->getDynamic('all', 'today');
|
||||
$cneMetrics = $this->cne->cneMetrics();
|
||||
|
||||
$this->view->title = $this->lang->my->common;
|
||||
$this->view->instances = $instances;
|
||||
$this->view->actions = $actions;
|
||||
$this->view->cneMetrics = $cneMetrics;
|
||||
$this->view->cpuInfo = $this->systemZen->getCpuUsage($cneMetrics->metrics->cpu);
|
||||
$this->view->memoryInfo = $this->systemZen->getMemUsage($cneMetrics->metrics->memory);
|
||||
$this->view->pager = $pager;
|
||||
|
||||
$this->display();
|
||||
@@ -707,4 +703,23 @@ class system extends control
|
||||
{
|
||||
return $this->system->initSystem();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取CNE平台的集群度量。
|
||||
* Get cluster metrics of CNE platform.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxCneMetrics()
|
||||
{
|
||||
$cneMetrics = $this->loadModel('cne')->cneMetrics();
|
||||
$result = array(
|
||||
'status' => $cneMetrics->status,
|
||||
'node_count' => $cneMetrics->node_count,
|
||||
'cpuInfo' => $this->systemZen->getCpuUsage($cneMetrics->metrics->cpu),
|
||||
'memoryInfo' => $this->systemZen->getMemUsage($cneMetrics->metrics->memory)
|
||||
);
|
||||
return $this->send(array('result' => 'success', 'data' => $result));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
let progressTemplate = '<div class="progress rounded-lg w-40 h-2 mr-2 inline-block" style="width:120px;" title="{tip}"><div class="progress-bar {color}" style="width: {rate};"></div></div>';
|
||||
let statusTemplate = '<span id="instance-status-{id}" data-status="{status}" class="{class}">{text}</span>';
|
||||
let cpuCircle, memoryCircle, cpuRate, memoryRate, cpuAnimationId, memoryAnimationId, cpuRateStart = 0, memoryRateStart = 0;
|
||||
|
||||
window.renderInstanceList = function (result, {col, row, value})
|
||||
{
|
||||
@@ -32,6 +33,7 @@ $(function()
|
||||
if(typeof timer !== 'undefined') clearInterval(timer);
|
||||
if(instanceIdList.length === 0) return;
|
||||
if(inQuickon) timer = setInterval(refreshStatus, 5000);
|
||||
loadCneStatistic();
|
||||
});
|
||||
|
||||
window.onPageUnmount = function()
|
||||
@@ -39,6 +41,35 @@ window.onPageUnmount = function()
|
||||
if(typeof timer !== 'undefined') clearInterval(timer);
|
||||
}
|
||||
|
||||
function loadCneStatistic()
|
||||
{
|
||||
toggleLoading('#cpu-circle', true);
|
||||
toggleLoading('#memory-circle', true);
|
||||
toggleLoading('#status-icon', true);
|
||||
toggleLoading('.cpu-rate', true);
|
||||
toggleLoading('.cpu-memory', true);
|
||||
toggleLoading('#cne-statistic .cne-status', true);
|
||||
toggleLoading('#cne-statistic .node-quantity', true);
|
||||
$.ajaxSubmit({
|
||||
url: $.createLink('system', 'ajaxCneMetrics'),
|
||||
onComplete:function(res)
|
||||
{
|
||||
if(res.result === 'success')
|
||||
{
|
||||
$('#cpu-circle div').remove();
|
||||
$('#memory-circle div').remove();
|
||||
let cpuInfo = res.data.cpuInfo, memoryInfo = res.data.memoryInfo;
|
||||
cpuInfo.tip = cpuInfo.tip.substring(cpuInfo.tip.indexOf('=') + 1).trim();
|
||||
memoryInfo.tip = memoryInfo.tip.substring(memoryInfo.tip.indexOf('=') + 1).trim();
|
||||
cpuRate = cpuInfo.rate;
|
||||
memoryRate = memoryInfo.rate;
|
||||
cpuCircle = new zui.ProgressCircle('#cpu-circle', {percent: 0, size: 160, circleColor: cpuInfo.color, circleWidth: 8, text: ''});
|
||||
memoryCircle = new zui.ProgressCircle('#memory-circle', {percent: 0, size : 160, circleColor: memoryInfo.color, circleWidth: 8, text: ''});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function refreshStatus()
|
||||
{
|
||||
const postData = new FormData();
|
||||
@@ -66,4 +97,4 @@ function refreshStatus()
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -10,15 +10,11 @@ declare(strict_types=1);
|
||||
*/
|
||||
namespace zin;
|
||||
|
||||
$status = zget($cneMetrics, 'status', 'unknown');
|
||||
$pageInfo = usePager();
|
||||
|
||||
$cpuInfo['tip'] = trim(substr($cpuInfo['tip'], strpos($cpuInfo['tip'], '=') + 1));
|
||||
$memoryInfo['tip'] = trim(substr($memoryInfo['tip'], strpos($memoryInfo['tip'], '=') + 1));
|
||||
|
||||
jsVar('inQuickon', $config->inQuickon);
|
||||
jsVar('cpuInfo', $cpuInfo);
|
||||
jsVar('memoryInfo', $memoryInfo);
|
||||
jsVar('statusList', $lang->CNE->statusList);
|
||||
jsVar('statusIcons', $lang->CNE->statusIcons);
|
||||
jsVar('instanceIdList', helper::arrayColumn($instances, 'id'));
|
||||
|
||||
/* 资源统计 */
|
||||
@@ -29,6 +25,7 @@ div
|
||||
div
|
||||
(
|
||||
setClass('flex'),
|
||||
setID('cne-statistic'),
|
||||
div
|
||||
(
|
||||
setClass('basis-2/5 border h-40 rounded-md row'),
|
||||
@@ -38,12 +35,12 @@ div
|
||||
div
|
||||
(
|
||||
setClass('flex row basis-2/3 justify-evenly h-full ml-5'),
|
||||
icon(zget($this->lang->CNE->statusIcons, $status), set::size(30), setClass('app-status-circle status-' . $status)),
|
||||
icon('unknown', set::id('status-icon'), set::size(30), setClass('app-status-circle status-unknown')),
|
||||
div
|
||||
(
|
||||
setClass('p-2 ml-8 pr-6 flex col justify-between normal'),
|
||||
setStyle('white-space', 'nowrap'),
|
||||
div(setClass('text-xl font-semibold'), zget($lang->CNE->statusList, $status)),
|
||||
div(setClass('text-xl font-semibold cne-status')),
|
||||
$lang->system->cneStatus
|
||||
),
|
||||
div(),
|
||||
@@ -59,7 +56,7 @@ div
|
||||
div
|
||||
(
|
||||
setClass('flex col justify-between'),
|
||||
div(setClass('text-4xl font-semibold text-primary'), $cneMetrics->node_count),
|
||||
div(setClass('text-4xl font-semibold text-primary node-quantity')),
|
||||
$lang->system->nodeQuantity
|
||||
),
|
||||
div
|
||||
@@ -79,29 +76,28 @@ div
|
||||
setClass(' flex row'),
|
||||
div
|
||||
(
|
||||
set::id('cpu-circle'),
|
||||
zui::ProgressCircle
|
||||
(
|
||||
set::percent($cpuInfo['rate']),
|
||||
set::percent(0),
|
||||
set::size(160),
|
||||
set::circleColor($cpuInfo['color']),
|
||||
set::circleColor('gray'),
|
||||
set::circleWidth(8),
|
||||
set::text('')
|
||||
|
||||
),
|
||||
setClass('relative'),
|
||||
span
|
||||
(
|
||||
setClass('absolute text-lg'),
|
||||
setStyle(array('transform' => 'translate(-50%, -50%)', 'top' => '50%', 'left' => '50%', 'white-space' => 'nowrap')),
|
||||
icon('cpu', setClass('mr-1'), set::size(20),setStyle('color', $cpuInfo['color'])),
|
||||
icon('cpu', setClass('mr-1'), set::size(20), setStyle('color', 'gray')),
|
||||
$lang->system->cpuUsage
|
||||
)
|
||||
),
|
||||
div
|
||||
(
|
||||
setClass('flex col justify-around p-5'),
|
||||
div(setClass('text-4xl font-medium'), $cpuInfo['rate'], span('%', setClass('text-xl ml-1'))),
|
||||
$cpuInfo['tip']
|
||||
div(setClass('text-4xl font-medium cpu-rate'), '0.00', span('%', setClass('text-xl ml-1'))),
|
||||
)
|
||||
),
|
||||
div
|
||||
@@ -109,11 +105,12 @@ div
|
||||
setClass(' flex row'),
|
||||
div
|
||||
(
|
||||
set::id('memory-circle'),
|
||||
zui::ProgressCircle
|
||||
(
|
||||
set::percent($memoryInfo['rate']),
|
||||
set::percent(0),
|
||||
set::size(160),
|
||||
set::circleColor($memoryInfo['color']),
|
||||
set::circleColor('gray'),
|
||||
set::circleWidth(8),
|
||||
set::text('')
|
||||
|
||||
@@ -123,15 +120,14 @@ div
|
||||
(
|
||||
setClass('absolute text-lg'),
|
||||
setStyle(array('transform' => 'translate(-50%, -50%)', 'top' => '50%', 'left' => '50%', 'white-space' => 'nowrap')),
|
||||
icon('memory', setClass('mr-1'), set::size(20), setStyle('color', $memoryInfo['color'])),
|
||||
icon('memory', setClass('mr-1'), set::size(20), setStyle('color', 'gray')),
|
||||
$lang->system->memUsage
|
||||
)
|
||||
),
|
||||
div
|
||||
(
|
||||
setClass('flex col justify-around p-5'),
|
||||
div(setClass('text-4xl font-medium'), $memoryInfo['rate'], span('%', setClass('text-xl ml-1'))),
|
||||
$memoryInfo['tip']
|
||||
div(setClass('text-4xl font-medium memory-rate'), '0.00', span('%', setClass('text-xl ml-1'))),
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -152,4 +148,4 @@ div
|
||||
set::onRenderCell(jsRaw('window.renderInstanceList')),
|
||||
set::footPager(usePager())
|
||||
)
|
||||
);
|
||||
);
|
||||
Reference in New Issue
Block a user