You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
6.0 KiB
172 lines
6.0 KiB
<template>
|
|
<div>
|
|
<div class="tip-row">
|
|
<span>启动时间:{{operatingInfo.bootedTime}}</span>
|
|
<span style="margin-left: 20px">运行时间:{{operatingInfo.upTime|timePass}}</span>
|
|
</div>
|
|
|
|
<cpu-info :data="cpuInfo"/>
|
|
|
|
<el-row :gutter="40" style="margin-top: 32px">
|
|
<el-col :span="12">
|
|
<memory-info :data="memoryInfo"/>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<jvm-info :data="jvmInfo"/>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {getMonitorInfo} from "@/api/system/monitor"
|
|
import CpuInfo from './components/Cpu'
|
|
import MemoryInfo from './components/Memory'
|
|
import JvmInfo from './components/Jvm'
|
|
import {timeFormat} from "@/utils"
|
|
import {sub} from "@/utils/math"
|
|
|
|
export default {
|
|
name: "systemMonitor",
|
|
|
|
components: {CpuInfo, MemoryInfo, JvmInfo},
|
|
|
|
data() {
|
|
return {
|
|
loading: false,
|
|
info: {
|
|
diskInfo: [{
|
|
"name": "",
|
|
"remain": 0,
|
|
"total": 0,
|
|
"used": 0,
|
|
"utilizationRate": 0
|
|
}]
|
|
},
|
|
expire: 60,
|
|
time: '',
|
|
refreshTimer: null,
|
|
operatingInfo: {
|
|
bootedTime: 'NaN',
|
|
upTime: 'NaN'
|
|
},
|
|
cpuInfo: {
|
|
name: '',
|
|
core: 'NaN',
|
|
utilizationRate: 0.00,
|
|
lastUtilizationRate: 0.00,
|
|
maxUtilizationRate: 0.00,
|
|
lastMaxUtilizationRate: 0.00,
|
|
xData: [],
|
|
vData: []
|
|
},
|
|
memoryInfo: {
|
|
total: 0,
|
|
used: 0,
|
|
utilizationRate: 0.00,
|
|
lastUtilizationRate: 0.00,
|
|
maxUtilizationRate: 0.00,
|
|
lastMaxUtilizationRate: 0.00,
|
|
xData: [],
|
|
vData: []
|
|
},
|
|
jvmInfo: {
|
|
total: 0,
|
|
used: 0,
|
|
remain: 0,
|
|
utilizationRate: 0.00,
|
|
lastUtilizationRate: 0.00,
|
|
maxUtilizationRate: 0.00,
|
|
lastMaxUtilizationRate: 0.00,
|
|
xData: [],
|
|
vData: []
|
|
}
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
getData() {
|
|
if (this.loading) return
|
|
this.loading = true
|
|
getMonitorInfo()
|
|
.then(data => {
|
|
this.expire = data.expire
|
|
this.time = timeFormat('HH:mm:ss', new Date(data.timestamp))
|
|
this.handleOperatingInfo(data.operatingInfo)
|
|
this.handleCpuInfo(data.cpuInfo)
|
|
this.handleMemoryInfo(data.memoryInfo)
|
|
this.handleJvmInfo(data.jvmInfo)
|
|
})
|
|
.finally(() => this.loading = false)
|
|
},
|
|
|
|
handleOperatingInfo(info) {
|
|
this.operatingInfo.bootedTime = timeFormat(null, new Date(info.bootedTime * 1000))
|
|
this.operatingInfo.upTime = info.upTime
|
|
},
|
|
|
|
handleCpuInfo(info) {
|
|
let used = (Number)(sub(100, info.idle).toFixed(2))
|
|
this.cpuInfo.name = info.name
|
|
this.cpuInfo.core = info.core
|
|
this.cpuInfo.lastUtilizationRate = this.cpuInfo.utilizationRate
|
|
this.cpuInfo.utilizationRate = used
|
|
if (used > this.cpuInfo.maxUtilizationRate) {
|
|
this.cpuInfo.lastMaxUtilizationRate = this.cpuInfo.maxUtilizationRate
|
|
this.cpuInfo.maxUtilizationRate = used
|
|
}
|
|
this.cpuInfo.xData.push(this.time)
|
|
this.cpuInfo.vData.push(used)
|
|
},
|
|
|
|
handleMemoryInfo(info) {
|
|
info.utilizationRate = (Number)(info.utilizationRate.toFixed(2))
|
|
this.memoryInfo.total = info.total
|
|
this.memoryInfo.used = info.used
|
|
this.memoryInfo.remain = info.remain
|
|
this.memoryInfo.lastUtilizationRate = this.memoryInfo.utilizationRate
|
|
this.memoryInfo.utilizationRate = info.utilizationRate
|
|
if (info.utilizationRate > this.memoryInfo.maxUtilizationRate) {
|
|
this.memoryInfo.lastMaxUtilizationRate = this.memoryInfo.maxUtilizationRate
|
|
this.memoryInfo.maxUtilizationRate = info.utilizationRate
|
|
}
|
|
this.memoryInfo.xData.push(this.time)
|
|
this.memoryInfo.vData.push(info.utilizationRate)
|
|
},
|
|
|
|
handleJvmInfo(info) {
|
|
info.utilizationRate = (Number)(info.utilizationRate.toFixed(2))
|
|
this.jvmInfo.total = info.total
|
|
this.jvmInfo.used = info.used
|
|
this.jvmInfo.remain = info.remain
|
|
this.jvmInfo.lastUtilizationRate = this.jvmInfo.utilizationRate
|
|
this.jvmInfo.utilizationRate = info.utilizationRate
|
|
if (info.utilizationRate > this.jvmInfo.maxUtilizationRate) {
|
|
this.jvmInfo.lastMaxUtilizationRate = this.jvmInfo.maxUtilizationRate
|
|
this.jvmInfo.maxUtilizationRate = info.utilizationRate
|
|
}
|
|
this.jvmInfo.xData.push(this.time)
|
|
this.jvmInfo.vData.push(info.utilizationRate)
|
|
},
|
|
},
|
|
|
|
mounted() {
|
|
this.getData()
|
|
this.refreshTimer = setInterval(() => this.getData(), 40000)
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.chart-card {
|
|
width: 100%;
|
|
|
|
.title-span {
|
|
margin-left: 20px
|
|
}
|
|
|
|
.line-chart {
|
|
height: 250px;
|
|
}
|
|
}
|
|
</style>
|
|
|