@ -39,11 +39,21 @@
< block -box >
< ul class = "card-gauges" >
< li v-for ="(item, index) in gaugeConfig " :key ="index" >
< template v-if ="!detail.isExternal || i ndex >= 2 ">
< li v-for ="(item, index) in gaugeConfig .slice(0, 4) " :key ="index" >
< template v-if ="!detail.isExternal || i tem.title.includes('使用率') ">
< Gauge v -bind = " item " / >
< / template >
< template v -else -if = " detail.isExternal & & index < 2 " >
< template v -else -if = " detail.isExternal & & item.title.includes ( ' 分 配 率 ' ) " >
< el -empty description = "暂无资源分配数据" :image-size ="90" / >
< / template >
< / li >
< / ul >
< ul class = "card-gauges" style = "margin-top: 20px;" >
< li v-for ="(item, index) in gaugeConfig.slice(4, 7)" :key ="index" >
< template v-if ="!detail.isExternal || item.title.includes('使用率')" >
< Gauge v -bind = " item " / >
< / template >
< template v -else -if = " detail.isExternal & & item.title.includes ( ' 分 配 率 ' ) " >
< el -empty description = "暂无资源分配数据" :image-size ="90" / >
< / template >
< / li >
@ -56,14 +66,13 @@
< time -picker v -model = " times " type = "datetimerange" size = "small" / >
< / template >
< div style = "height: 200px" >
< echarts -plus
: options = "
getRangeOptions ( {
core : gaugeConfig [ 0 ] . data ,
memory : gaugeConfig [ 1 ] . data ,
< echarts -plus : options = " getRangeOptions ( {
cpu : gaugeConfig [ 7 ] . data ,
internal : gaugeConfig [ 8 ] . data ,
core : gaugeConfig [ 4 ] . data ,
memory : gaugeConfig [ 5 ] . data ,
} )
"
/ >
" / >
< / div >
< / b l o c k - b o x >
< block -box title = "资源使用趋势(%) " >
@ -71,14 +80,13 @@
< time -picker v -model = " times " type = "datetimerange" size = "small" / >
< / template >
< div style = "height: 200px" >
< echarts -plus
: options = "
getRangeOptions ( {
core : gaugeConfig [ 2 ] . data ,
< echarts -plus : options = " getRangeOptions ( {
cpu : gaugeConfig [ 0 ] . data ,
internal : gaugeConfig [ 1 ] . data ,
core : gaugeConfig [ 6 ] . data ,
memory : gaugeConfig [ 3 ] . data ,
} )
"
/ >
" / >
< / div >
< / b l o c k - b o x >
< / div >
@ -116,10 +124,12 @@ import { getLineOptions } from '~/vgpu/views/monitor/overview/getOptions';
import { ElMessage , ElMessageBox } from 'element-plus' ;
import api from '~/vgpu/api/task' ;
import { getRangeOptions } from './getOptions' ;
import { getDaysInRange } from "@/utils" ;
import { bytesToGB } from "@/utils" ;
import useParentAction from '~/vgpu/hooks/useParentAction' ;
const { sendRouteChange } = useParentAction ( ) ;
const route = useRoute ( ) ;
const router = useRouter ( ) ;
const detail = ref ( { } ) ;
@ -155,6 +165,46 @@ const cp = useInstantVector(
const gaugeConfig = useInstantVector (
[
{
title : 'CPU 使用率' ,
percent : 0 ,
query : ` count(node_cpu_seconds_total{mode="idle", instance=~" $ node"}) by (instance)*(1 - avg(rate(node_cpu_seconds_total{mode="idle", instance=~" $ node"}[5m])) by (instance)) ` ,
totalQuery : ` count(node_cpu_seconds_total{mode="idle", instance=~" $ node"}) by (instance) ` ,
percentQuery : ` 100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{mode="idle", instance=~" $ node"}[1m]))) ` ,
total : 0 ,
used : 0 ,
unit : '核' ,
} ,
{
title : '内存 使用率' ,
percent : 0 ,
query : ` avg(node_memory_MemTotal_bytes{instance=~" $ node"} - node_memory_MemAvailable_bytes{instance=~" $ node"}) by (instance) / 1024 / 1024 / 1024 ` ,
totalQuery : ` avg(node_memory_MemTotal_bytes{instance=~" $ node"}) by (instance) / 1024 / 1024 / 1024 ` ,
percentQuery : ` 100 * (1 - node_memory_MemAvailable_bytes{instance=~" $ node"} / node_memory_MemTotal_bytes{instance=~" $ node"}) ` ,
total : 0 ,
used : 0 ,
unit : 'GiB' ,
} ,
{
title : '磁盘 使用率' ,
percent : 0 ,
query : ` sum(node_filesystem_size_bytes{instance=~" $ node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"} - node_filesystem_free_bytes{instance=~" $ node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024 ` ,
totalQuery : ` sum(node_filesystem_size_bytes{instance=~" $ node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024 ` ,
percentQuery : ` ` ,
total : 0 ,
used : 0 ,
unit : 'GiB' ,
} ,
{
title : '显存使用率' ,
percent : 0 ,
query : ` avg(sum(hami_memory_used{node=~" $ node"}) by (instance)) / 1024 ` ,
totalQuery : ` avg(sum(hami_memory_size{node=~" $ node"}) by (instance))/1024 ` ,
percentQuery : ` (avg(sum(hami_memory_used{node=~" $ node"}) by (instance)) / 1024)/(avg(sum(hami_memory_size{node=~" $ node"}) by (instance))/1024)*100 ` ,
total : 0 ,
used : 0 ,
unit : 'GiB' ,
} ,
{
title : '算力分配率' ,
percent : 0 ,
@ -186,11 +236,21 @@ const gaugeConfig = useInstantVector(
unit : ' ' ,
} ,
{
title : ' 显存使用 率',
title : ' CPU 分配 率',
percent : 0 ,
query : ` avg(sum(hami_memory_used{node=~" $ node"}) by (instance)) / 1024 ` ,
totalQuery : ` avg(sum(hami_memory_size{node=~" $ node"}) by (instance))/1024 ` ,
percentQuery : ` (avg(sum(hami_memory_used{node=~" $ node"}) by (instance)) / 1024)/(avg(sum(hami_memory_size{node=~" $ node"}) by (instance))/1024)*100 ` ,
query : ` ` ,
totalQuery : ` ` ,
percentQuery : ` avg(sum(hami_container_vcore_allocated{node=~" $ node"}) by (instance) / sum(hami_core_size{node=~" $ node"}) by (instance) * 100) ` ,
total : 0 ,
used : 0 ,
unit : '核' ,
} ,
{
title : '内存 分配率' ,
percent : 0 ,
query : ` ` ,
totalQuery : ` ` ,
percentQuery : ` avg(sum(hami_container_memory_allocated{node=~" $ node"}) by (instance) / sum(hami_memory_size{node=~" $ node"}) by (instance) * 100) ` ,
total : 0 ,
used : 0 ,
unit : 'GiB' ,
@ -373,6 +433,7 @@ onMounted(async () => {
/ / l i n e - h e i g h t : 2 0 p x ;
margin - bottom : 20 px ;
}
/ / . n o d e - d e t a i l - l e f t {
/ / m i n - w i d t h : 8 0 0 p x ;
/ / }
@ -405,6 +466,7 @@ onMounted(async () => {
. gauges {
flex : 1 ;
display : flex ;
li {
flex : 1 ;
}
@ -417,8 +479,9 @@ onMounted(async () => {
list - style : none ;
display : flex ;
height : 200 px ;
li {
flex : 1 ;
flex : 0.25 ;
}
}
@ -431,6 +494,7 @@ onMounted(async () => {
. node - block {
display : flex ;
flex - direction : column ;
. home - block - content {
flex : 1 ;
}