* [task#139215,done,4h,0] optimize devops metrics.

This commit is contained in:
liumingliang
2025-03-14 17:27:56 +08:00
committed by 田淑杰
parent e771234046
commit 622fe4bc52
6 changed files with 80 additions and 32 deletions
+3 -2
View File
@@ -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;
}
+4 -1
View File
@@ -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'))
+3 -1
View File
@@ -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');
+21 -6
View File
@@ -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));
}
}
+32 -1
View File
@@ -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()
}
}
});
}
}
+17 -21
View File
@@ -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())
)
);
);