|
|
|
<template>
|
|
|
|
<div class="app-container">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
<el-row>
|
|
|
|
|
|
|
|
<!-- CPU使用率 -->
|
|
|
|
<el-col :span="6" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div>
|
|
|
|
<span class="meter-title">
|
|
|
|
<i class="el-icon-odometer"></i>
|
|
|
|
CPU使用率
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div ref="systemCpuMeter" class="meter-chart"/>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<!-- JVM CPU使用率 -->
|
|
|
|
<el-col :span="6" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div>
|
|
|
|
<span class="meter-title">
|
|
|
|
<i class="el-icon-odometer"></i>
|
|
|
|
JVM CPU使用率
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div ref="jvmCpuMeter" class="meter-chart"/>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<!-- 系统内存占用 -->
|
|
|
|
<el-col :span="6" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div>
|
|
|
|
<span class="meter-title">
|
|
|
|
<i class="el-icon-odometer"></i>
|
|
|
|
系统内存
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div ref="systemMemoryMeter" class="meter-chart"/>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<!-- JVM内存占用 -->
|
|
|
|
<el-col :span="6" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div>
|
|
|
|
<span class="meter-title">
|
|
|
|
<i class="el-icon-odometer"></i>
|
|
|
|
JVM内存
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div ref="jvmMemoryMeter" class="meter-chart"/>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
</el-row>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 设备消息 -->
|
|
|
|
<div style="margin-top: 10px">
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div style="height: 60px">
|
|
|
|
<span>设备消息</span>
|
|
|
|
<div style="float: right">
|
|
|
|
<el-radio-group v-model="messageMonitorTimeDimension">
|
|
|
|
<el-radio-button label="day">今日</el-radio-button>
|
|
|
|
<el-radio-button label="week">近一周</el-radio-button>
|
|
|
|
<el-radio-button label="month">近一月</el-radio-button>
|
|
|
|
<el-radio-button label="year">近一年</el-radio-button>
|
|
|
|
</el-radio-group>
|
|
|
|
<el-date-picker
|
|
|
|
style="margin-left: 10px;"
|
|
|
|
v-model="messageMonitorTimePick"
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
type="datetimerange"
|
|
|
|
range-separator="至"
|
|
|
|
start-placeholder="开始日期"
|
|
|
|
end-placeholder="结束日期"
|
|
|
|
@change="messageMonitorDateChange"
|
|
|
|
>
|
|
|
|
</el-date-picker>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<div ref="messageMonitor" style="height: 415px"/>
|
|
|
|
</div>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- TODO 暂时注释:没有响应的历史数据 -->
|
|
|
|
<!-- JVM CPU 使用率趋势 -->
|
|
|
|
<!-- <div style="margin-top: 10px">
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div style="height: 40px">
|
|
|
|
<span>JVM CPU使用率趋势</span>
|
|
|
|
<div style="float: right">
|
|
|
|
<el-date-picker
|
|
|
|
v-model="cpuUsageTrend"
|
|
|
|
:picker-options="jvmCpuPickerOptions()"
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
type="datetimerange"
|
|
|
|
range-separator="至"
|
|
|
|
start-placeholder="开始日期"
|
|
|
|
end-placeholder="结束日期"
|
|
|
|
@change="jvmCpuTrendsChange"
|
|
|
|
>
|
|
|
|
</el-date-picker>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div ref="jvmCpuTrends" style="height: 300px"/>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12" class="card-box">
|
|
|
|
<el-card>
|
|
|
|
<div style="height: 40px">
|
|
|
|
<span>JVM内存使用趋势</span>
|
|
|
|
<div style="float: right">
|
|
|
|
<el-date-picker
|
|
|
|
v-model="jvmUsageTrend"
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
type="datetimerange"
|
|
|
|
range-separator="至"
|
|
|
|
start-placeholder="开始日期"
|
|
|
|
end-placeholder="结束日期"
|
|
|
|
>
|
|
|
|
</el-date-picker>
|
|
|
|
</div>
|
|
|
|
<div ref="jvmMemoryTrends" style="height: 300px"/>
|
|
|
|
</div>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</div>-->
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import * as echarts from 'echarts'
|
|
|
|
import { getDashboardData } from '@/api/dashboard'
|
|
|
|
import { formatDate } from '@/utils'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'Dashboard',
|
|
|
|
data() {
|
|
|
|
|
|
|
|
return {
|
|
|
|
// 系统cpu使用率chart对象
|
|
|
|
systemCpuChartMeter: undefined,
|
|
|
|
// jvm cpu使用率chart对象
|
|
|
|
jvmCpuChartMeter: undefined,
|
|
|
|
// 系统内存chart对象
|
|
|
|
systemMemoryChartMeter: undefined,
|
|
|
|
// jvm内存chart对象
|
|
|
|
jvmMemoryChartMeter: undefined,
|
|
|
|
// 时间按钮选项
|
|
|
|
messageMonitorTimeDimension: 'day',
|
|
|
|
// 消息的开始时间与结束时间选择
|
|
|
|
messageMonitorTimePick: [],
|
|
|
|
// 设备消息趋势统chart对象
|
|
|
|
messageMonitorChart: undefined,
|
|
|
|
|
|
|
|
// 上行设备消息监控数据
|
|
|
|
receivedMessageMonitor: [],
|
|
|
|
// 下行设备消息监控数据
|
|
|
|
sentMessageMonitor: [],
|
|
|
|
|
|
|
|
// jvm cpu趋势chart对象
|
|
|
|
jvmCpuTrendsChart: undefined,
|
|
|
|
|
|
|
|
/*jvmUsageTrend: null,
|
|
|
|
cpuUsageTrend: null*/
|
|
|
|
|
|
|
|
}
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
messageMonitorTimeDimension: {
|
|
|
|
immediate: true,
|
|
|
|
handler() {
|
|
|
|
this.timeDimensionChange()
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
receivedMessageMonitor() {
|
|
|
|
this.updateMessageMonitorChart('received_message')
|
|
|
|
},
|
|
|
|
sentMessageMonitor() {
|
|
|
|
this.updateMessageMonitorChart('sent_message')
|
|
|
|
},
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
// 系统cpu使用率仪表初始化
|
|
|
|
this.systemCpuChartMeterInit()
|
|
|
|
// 订阅系统cpu使用率实时数据
|
|
|
|
this.subCpuRealTimeData()
|
|
|
|
|
|
|
|
// jvm cpu使用率仪表初始化
|
|
|
|
this.jvmCpuChartMeterInit()
|
|
|
|
// 订阅jvm cpu使用率实时数据
|
|
|
|
this.subJvmCpuRealTimeData()
|
|
|
|
|
|
|
|
// 系统内存使用率仪表初始化
|
|
|
|
this.systemMemoryChartMeterInit()
|
|
|
|
// 订阅系统内存实时数据
|
|
|
|
this.subSystemMemoryRealTimeData()
|
|
|
|
|
|
|
|
// jvm内存使用率仪表初始化
|
|
|
|
this.jvmMemoryChartMeterInit()
|
|
|
|
// 订阅jvm内存实时数据
|
|
|
|
this.subJvmMemoryRealTimeData()
|
|
|
|
|
|
|
|
// 设备消息char初始化
|
|
|
|
this.messageMonitorChartInit()
|
|
|
|
|
|
|
|
// 初始jvm cup趋势chart
|
|
|
|
// this.jvmCpuTrendsChartInit()
|
|
|
|
},
|
|
|
|
destroyed() {
|
|
|
|
// 取消系统cpu使用率实时数据订阅
|
|
|
|
this.unsubCpuRealTimeData()
|
|
|
|
// 取消jvm cpu使用率实时数据订阅
|
|
|
|
this.unsubJvmCpuRealTimeData()
|
|
|
|
// 取消系统内存实时数据订阅
|
|
|
|
this.unsubSystemMemoryRealTimeData()
|
|
|
|
// 取消jvm内存实时数据订阅
|
|
|
|
this.unsubJvmMemoryRealTimeData()
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
|
|
|
|
/** 获取最近一小时开始时间与结束时间 */
|
|
|
|
getLastHour() {
|
|
|
|
const now = new Date()
|
|
|
|
const start = new Date();
|
|
|
|
start.setHours(start.getHours() - 1);
|
|
|
|
return [start, now]
|
|
|
|
},
|
|
|
|
/** 获取今日的开始时间与结束时间 */
|
|
|
|
getTodayTime() {
|
|
|
|
const now = new Date()
|
|
|
|
const start = new Date(now.getFullYear(), now.getMonth(), now.getDate())
|
|
|
|
return [start, now]
|
|
|
|
},
|
|
|
|
/** 获取最近一周开始时间与结束时间 */
|
|
|
|
getLastWeek() {
|
|
|
|
const now = new Date()
|
|
|
|
const start = new Date();
|
|
|
|
start.setDate(start.getDate() - 7);
|
|
|
|
return [start, now]
|
|
|
|
},
|
|
|
|
/** 获取最近一月开始时间与结束时间 */
|
|
|
|
getLastMonth() {
|
|
|
|
const now = new Date()
|
|
|
|
const start = new Date();
|
|
|
|
start.setMonth(start.getMonth() - 1);
|
|
|
|
return [start, now]
|
|
|
|
},
|
|
|
|
/** 获取最近一年开始时间与结束时间 */
|
|
|
|
getLastYear() {
|
|
|
|
const now = new Date()
|
|
|
|
const start = new Date();
|
|
|
|
start.setFullYear(start.getFullYear() - 1);
|
|
|
|
return [start, now]
|
|
|
|
},
|
|
|
|
|
|
|
|
/************************************ 仪表盘 **************************************/
|
|
|
|
/** 系统cpu使用率仪表初始化 */
|
|
|
|
systemCpuChartMeterInit() {
|
|
|
|
this.systemCpuChartMeter = echarts.init(this.$refs.systemCpuMeter)
|
|
|
|
this.systemCpuChartMeter.setOption({
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
name: '百分之',
|
|
|
|
radius: '100%',
|
|
|
|
type: 'gauge',
|
|
|
|
min: 0,
|
|
|
|
max: 100,
|
|
|
|
splitNumber: 5,
|
|
|
|
detail: {
|
|
|
|
show: true,
|
|
|
|
formatter: '{value}%',
|
|
|
|
textStyle: {
|
|
|
|
fontSize: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
value: 0
|
|
|
|
}
|
|
|
|
],
|
|
|
|
center: ['50%', '60%'],
|
|
|
|
axisTick: { // 短刻度样式
|
|
|
|
distance: -5, // 位置
|
|
|
|
lineStyle: {
|
|
|
|
width: 1,
|
|
|
|
color: '#0063bb'
|
|
|
|
},
|
|
|
|
show: true // false表示不显示
|
|
|
|
},
|
|
|
|
// 坐标轴线
|
|
|
|
axisLine: {
|
|
|
|
show: true,
|
|
|
|
roundCap: true,
|
|
|
|
lineStyle: {
|
|
|
|
width: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 进度条
|
|
|
|
progress: {
|
|
|
|
show: true,
|
|
|
|
width: 5,
|
|
|
|
roundCap: true
|
|
|
|
},
|
|
|
|
splitLine: { // 长刻度设置
|
|
|
|
distance: -15, // 位置
|
|
|
|
length: 10,
|
|
|
|
lineStyle: {
|
|
|
|
width: 3,
|
|
|
|
color: '#0063bb'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
axisLabel: { // 刻度值
|
|
|
|
show: true,
|
|
|
|
distance: 30, // 位置
|
|
|
|
color: '#5d0caa',
|
|
|
|
fontSize: 12
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 订阅系统cpu使用率实时数据 */
|
|
|
|
subCpuRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'sub',
|
|
|
|
content: {
|
|
|
|
type: 'sub',
|
|
|
|
id: 'home-page-statistics-cpu-realTime',
|
|
|
|
topic: '/dashboard/systemMonitor/cpu/usage/realTime',
|
|
|
|
parameter: {
|
|
|
|
params: {
|
|
|
|
history: 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).then(data => {
|
|
|
|
this.systemCpuChartMeter.setOption({
|
|
|
|
series: [{
|
|
|
|
data: [{
|
|
|
|
value: data.payload.value
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 取消cpu使用率实时数据订阅 */
|
|
|
|
unsubCpuRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'unsub',
|
|
|
|
content: {
|
|
|
|
type: 'unsub',
|
|
|
|
id: 'home-page-statistics-cpu-realTime',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
/** jvm cpu使用率仪表初始化 */
|
|
|
|
jvmCpuChartMeterInit() {
|
|
|
|
this.jvmCpuChartMeter = echarts.init(this.$refs.jvmCpuMeter)
|
|
|
|
this.jvmCpuChartMeter.setOption({
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
name: '百分之',
|
|
|
|
radius: '100%',
|
|
|
|
type: 'gauge',
|
|
|
|
min: 0,
|
|
|
|
max: 100,
|
|
|
|
splitNumber: 5,
|
|
|
|
detail: {
|
|
|
|
show: true,
|
|
|
|
formatter: '{value}%',
|
|
|
|
textStyle: {
|
|
|
|
fontSize: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
value: 0
|
|
|
|
}
|
|
|
|
],
|
|
|
|
center: ['50%', '60%'],
|
|
|
|
axisTick: { // 短刻度样式
|
|
|
|
distance: -5, // 位置
|
|
|
|
lineStyle: {
|
|
|
|
width: 1,
|
|
|
|
color: '#0063bb'
|
|
|
|
},
|
|
|
|
show: true // false表示不显示
|
|
|
|
},
|
|
|
|
// 坐标轴线
|
|
|
|
axisLine: {
|
|
|
|
show: true,
|
|
|
|
roundCap: true,
|
|
|
|
lineStyle: {
|
|
|
|
width: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 进度条
|
|
|
|
progress: {
|
|
|
|
show: true,
|
|
|
|
width: 5,
|
|
|
|
roundCap: true
|
|
|
|
},
|
|
|
|
splitLine: { // 长刻度设置
|
|
|
|
distance: -15, // 位置
|
|
|
|
length: 10,
|
|
|
|
lineStyle: {
|
|
|
|
width: 3,
|
|
|
|
color: '#0063bb'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
axisLabel: { // 刻度值
|
|
|
|
show: true,
|
|
|
|
distance: 30, // 位置
|
|
|
|
color: '#5d0caa',
|
|
|
|
fontSize: 12
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 订阅jvm cpu使用率实时数据 */
|
|
|
|
subJvmCpuRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'sub',
|
|
|
|
content: {
|
|
|
|
type: 'sub',
|
|
|
|
id: 'home-page-statistics-jvm-cpu-realTime',
|
|
|
|
topic: '/dashboard/jvmMonitor/cpu/usage/realTime',
|
|
|
|
parameter: {
|
|
|
|
params: {
|
|
|
|
history: 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).then(data => {
|
|
|
|
this.jvmCpuChartMeter.setOption({
|
|
|
|
series: [{
|
|
|
|
data: [{
|
|
|
|
value: data.payload.value
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 取消jvm cpu使用率实时数据订阅 */
|
|
|
|
unsubJvmCpuRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'unsub',
|
|
|
|
content: {
|
|
|
|
type: 'unsub',
|
|
|
|
id: 'home-page-statistics-jvm-cpu-realTime',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
/** 系统内存使用率仪表初始化 */
|
|
|
|
systemMemoryChartMeterInit() {
|
|
|
|
this.systemMemoryChartMeter = echarts.init(this.$refs.systemMemoryMeter)
|
|
|
|
this.systemMemoryChartMeter.setOption({
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
radius: '100%',
|
|
|
|
type: 'gauge',
|
|
|
|
min: 0,
|
|
|
|
max: 100,
|
|
|
|
splitNumber: 5,
|
|
|
|
detail: {
|
|
|
|
formatter: '{value}G',
|
|
|
|
textStyle: {
|
|
|
|
fontSize: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 进度条
|
|
|
|
progress: {
|
|
|
|
show: true,
|
|
|
|
width: 5,
|
|
|
|
roundCap: true
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
value: 0
|
|
|
|
}
|
|
|
|
],
|
|
|
|
center: ['50%', '60%'],
|
|
|
|
axisTick: { // 短刻度样式
|
|
|
|
distance: -5, // 位置
|
|
|
|
lineStyle: {
|
|
|
|
width: 1,
|
|
|
|
color: '#0063bb'
|
|
|
|
},
|
|
|
|
show: true // false表示不显示
|
|
|
|
},
|
|
|
|
// 坐标轴线
|
|
|
|
axisLine: {
|
|
|
|
show: true,
|
|
|
|
roundCap: true,
|
|
|
|
lineStyle: {
|
|
|
|
width: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
splitLine: { // 长刻度设置
|
|
|
|
distance: -15, // 位置
|
|
|
|
length: 10,
|
|
|
|
lineStyle: {
|
|
|
|
width: 3,
|
|
|
|
color: '#0063bb'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
axisLabel: { // 刻度值
|
|
|
|
// show:false
|
|
|
|
distance: 30, // 位置
|
|
|
|
color: '#5d0caa',
|
|
|
|
fontSize: 12
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 订阅系统内存实时数据 */
|
|
|
|
subSystemMemoryRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'sub',
|
|
|
|
content: {
|
|
|
|
type: 'sub',
|
|
|
|
id: 'home-page-statistics-system-realTime',
|
|
|
|
topic: '/dashboard/systemMonitor/memory/info/realTime',
|
|
|
|
parameter: {
|
|
|
|
params: {
|
|
|
|
history: 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).then(data => {
|
|
|
|
const value = data.payload.value
|
|
|
|
this.systemMemoryChartMeter.setOption({
|
|
|
|
series: [{
|
|
|
|
max: Math.round(value.max / 1000),
|
|
|
|
data: [{
|
|
|
|
value: (value.used / 1000).toFixed(1)
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 取消系统内存实时数据订阅 */
|
|
|
|
unsubSystemMemoryRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'unsub',
|
|
|
|
content: {
|
|
|
|
type: 'unsub',
|
|
|
|
id: 'home-page-statistics-system-realTime',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
/** jvm内存使用率仪表初始化 */
|
|
|
|
jvmMemoryChartMeterInit() {
|
|
|
|
this.jvmMemoryChartMeter = echarts.init(this.$refs.jvmMemoryMeter)
|
|
|
|
this.jvmMemoryChartMeter.setOption({
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
radius: '100%',
|
|
|
|
type: 'gauge',
|
|
|
|
min: 0,
|
|
|
|
max: 0,
|
|
|
|
splitNumber: 5,
|
|
|
|
detail: {
|
|
|
|
formatter: '{value}G',
|
|
|
|
textStyle: {
|
|
|
|
fontSize: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 进度条
|
|
|
|
progress: {
|
|
|
|
show: true,
|
|
|
|
width: 5,
|
|
|
|
roundCap: true
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
value: 0
|
|
|
|
}
|
|
|
|
],
|
|
|
|
center: ['50%', '60%'],
|
|
|
|
axisTick: { // 短刻度样式
|
|
|
|
distance: -5, // 位置
|
|
|
|
lineStyle: {
|
|
|
|
width: 1,
|
|
|
|
color: '#0063bb'
|
|
|
|
},
|
|
|
|
show: true // false表示不显示
|
|
|
|
},
|
|
|
|
// 坐标轴线
|
|
|
|
axisLine: {
|
|
|
|
show: true,
|
|
|
|
roundCap: true,
|
|
|
|
lineStyle: {
|
|
|
|
width: 20
|
|
|
|
}
|
|
|
|
},
|
|
|
|
splitLine: { // 长刻度设置
|
|
|
|
distance: -15, // 位置
|
|
|
|
length: 10,
|
|
|
|
lineStyle: {
|
|
|
|
width: 3,
|
|
|
|
color: '#0063bb'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
axisLabel: { // 刻度值
|
|
|
|
// show:false
|
|
|
|
distance: 30, // 位置
|
|
|
|
color: '#5d0caa',
|
|
|
|
fontSize: 12
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 订阅jvm内存实时数据 */
|
|
|
|
subJvmMemoryRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'sub',
|
|
|
|
content: {
|
|
|
|
type: 'sub',
|
|
|
|
id: 'home-page-statistics-jvm-realTime',
|
|
|
|
topic: '/dashboard/jvmMonitor/memory/info/realTime',
|
|
|
|
parameter: {
|
|
|
|
params: {
|
|
|
|
history: 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).then(data => {
|
|
|
|
const value = data.payload.value
|
|
|
|
this.jvmMemoryChartMeter.setOption({
|
|
|
|
series: [{
|
|
|
|
max: Math.round(value.max / 1000),
|
|
|
|
data: [{
|
|
|
|
value: (value.used / 1000).toFixed(1)
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 取消jvm内存实时数据订阅 */
|
|
|
|
unsubJvmMemoryRealTimeData() {
|
|
|
|
this.socket.send({
|
|
|
|
method: 'event',
|
|
|
|
params: {
|
|
|
|
subEvent: 'unsub',
|
|
|
|
content: {
|
|
|
|
type: 'unsub',
|
|
|
|
id: 'home-page-statistics-jvm-realTime',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
/************************************ 设备消息 **************************************/
|
|
|
|
/** 时间按钮选项 */
|
|
|
|
timeDimensionChange() {
|
|
|
|
/*if (this.messageMonitorTimeDimension === 'day') {
|
|
|
|
this.messageMonitorTimePick = this.getTodayTime()
|
|
|
|
const params = {
|
|
|
|
time: '1h',
|
|
|
|
format: 'HH',
|
|
|
|
limit: 24,
|
|
|
|
from: formatDate(this.messageMonitorTimePick[0]),
|
|
|
|
to: formatDate(this.messageMonitorTimePick[1])
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getMessageMonitorData(params, 'received_message')
|
|
|
|
this.getMessageMonitorData(params, 'sent_message')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.messageMonitorTimeDimension === 'week') {
|
|
|
|
this.messageMonitorTimePick = this.getLastWeek()
|
|
|
|
const params = {
|
|
|
|
time: '1d',
|
|
|
|
format: 'M月dd日',
|
|
|
|
limit: 7,
|
|
|
|
from: formatDate(this.messageMonitorTimePick[0]),
|
|
|
|
to: formatDate(this.messageMonitorTimePick[1])
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getMessageMonitorData(params, 'received_message')
|
|
|
|
this.getMessageMonitorData(params, 'sent_message')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.messageMonitorTimeDimension === 'month') {
|
|
|
|
|
|
|
|
this.messageMonitorTimePick = this.getLastMonth()
|
|
|
|
const start = this.messageMonitorTimePick[0]
|
|
|
|
const now = this.messageMonitorTimePick[1]
|
|
|
|
|
|
|
|
const params = {
|
|
|
|
time: '1d',
|
|
|
|
format: 'M月dd日',
|
|
|
|
limit: Math.ceil((now - start)/ (1000 * 60 * 60 * 24)),
|
|
|
|
from: formatDate(start),
|
|
|
|
to: formatDate(now)
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getMessageMonitorData(params, 'received_message')
|
|
|
|
this.getMessageMonitorData(params, 'sent_message')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.messageMonitorTimeDimension === 'year') {
|
|
|
|
this.messageMonitorTimePick = this.getLastYear()
|
|
|
|
|
|
|
|
const params = {
|
|
|
|
time: '1M',
|
|
|
|
format: 'yyyy年-M月',
|
|
|
|
limit: 12,
|
|
|
|
from: formatDate(this.messageMonitorTimePick[0]),
|
|
|
|
to: formatDate(this.messageMonitorTimePick[1])
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getMessageMonitorData(params, 'received_message')
|
|
|
|
this.getMessageMonitorData(params, 'sent_message')
|
|
|
|
}*/
|
|
|
|
|
|
|
|
},
|
|
|
|
/** 设备消息char初始化 */
|
|
|
|
messageMonitorChartInit() {
|
|
|
|
this.messageMonitorChart = echarts.init(this.$refs.messageMonitor)
|
|
|
|
this.messageMonitorChart.setOption({
|
|
|
|
tooltip: {
|
|
|
|
trigger: 'axis'
|
|
|
|
},
|
|
|
|
legend: {
|
|
|
|
data: ['上行', '下行']
|
|
|
|
},
|
|
|
|
toolbox: {
|
|
|
|
show: true,
|
|
|
|
feature: {
|
|
|
|
mark: {
|
|
|
|
show: false
|
|
|
|
},
|
|
|
|
dataView: {
|
|
|
|
show: false,
|
|
|
|
readOnly: true
|
|
|
|
},
|
|
|
|
magicType: {
|
|
|
|
show: false,
|
|
|
|
type: ['line', 'bar', 'stack', 'tiled']
|
|
|
|
},
|
|
|
|
restore: {
|
|
|
|
show: false
|
|
|
|
},
|
|
|
|
saveAsImage: {
|
|
|
|
show: false
|
|
|
|
},
|
|
|
|
dataZoom: {
|
|
|
|
show: false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
calculable: true,
|
|
|
|
xAxis: [
|
|
|
|
{
|
|
|
|
type: 'category',
|
|
|
|
boundaryGap: false,
|
|
|
|
data: []
|
|
|
|
}
|
|
|
|
],
|
|
|
|
yAxis: [
|
|
|
|
{
|
|
|
|
type: 'value',
|
|
|
|
name: '单位:个',
|
|
|
|
nameTextStyle: {
|
|
|
|
color: 'rgb(127, 63, 0)',
|
|
|
|
fontStyle: 'normal',
|
|
|
|
align: 'center',
|
|
|
|
baseline: 'middle'
|
|
|
|
},
|
|
|
|
scale: true,
|
|
|
|
boundaryGap: true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
name: '上行',
|
|
|
|
type: 'line',
|
|
|
|
smooth: true,
|
|
|
|
itemStyle: {
|
|
|
|
normal: {
|
|
|
|
areaStyle: {
|
|
|
|
type: 'default'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data: []
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: '下行',
|
|
|
|
type: 'line',
|
|
|
|
smooth: true,
|
|
|
|
itemStyle: {
|
|
|
|
normal: {
|
|
|
|
areaStyle: {
|
|
|
|
type: 'default'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data: []
|
|
|
|
}
|
|
|
|
],
|
|
|
|
grid: {
|
|
|
|
height: '80%',
|
|
|
|
width: '90%',
|
|
|
|
x: '5%',
|
|
|
|
y: '10%'
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 获取设备消息指标数据 */
|
|
|
|
getMessageMonitorData(params, measurement) {
|
|
|
|
getDashboardData([{
|
|
|
|
dashboard: 'gatewayMonitor',
|
|
|
|
object: 'deviceGateway',
|
|
|
|
measurement: measurement,
|
|
|
|
dimension: 'agg',
|
|
|
|
group: 'device_msg',
|
|
|
|
params
|
|
|
|
}],
|
|
|
|
{
|
|
|
|
repeatSubmit: false
|
|
|
|
})
|
|
|
|
.then(({ data }) => {
|
|
|
|
if (measurement === 'received_message') {
|
|
|
|
this.receivedMessageMonitor = data || []
|
|
|
|
} else if (measurement === 'sent_message') {
|
|
|
|
this.sentMessageMonitor = data || []
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/** 更新设备消息趋势图 */
|
|
|
|
updateMessageMonitorChart(measurement) {
|
|
|
|
let xAxisData = []
|
|
|
|
let yAxisData = []
|
|
|
|
let chartOption = this.messageMonitorChart.getOption()
|
|
|
|
if (measurement === 'received_message') {
|
|
|
|
this.receivedMessageMonitor.forEach(({ data = {} }) => {
|
|
|
|
xAxisData.push(data.timeString)
|
|
|
|
yAxisData.push(data.value)
|
|
|
|
})
|
|
|
|
chartOption.xAxis[0].data = xAxisData
|
|
|
|
chartOption.series[0].data = yAxisData
|
|
|
|
this.messageMonitorChart.setOption(chartOption)
|
|
|
|
} else if (measurement === 'sent_message') {
|
|
|
|
this.sentMessageMonitor.forEach(({ data = {} }) => {
|
|
|
|
xAxisData.push(data.timeString)
|
|
|
|
yAxisData.push(data.value)
|
|
|
|
})
|
|
|
|
chartOption.series[1].data = yAxisData
|
|
|
|
this.messageMonitorChart.setOption(chartOption)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/** 设备消息日期控件选择事件 */
|
|
|
|
messageMonitorDateChange(date) {
|
|
|
|
const start = date[0]
|
|
|
|
const end = date[1]
|
|
|
|
const params = {
|
|
|
|
time: '1d',
|
|
|
|
format: 'M月dd日',
|
|
|
|
limit: Math.ceil((end - start)/ (1000 * 60 * 60 * 24)),
|
|
|
|
from: start,
|
|
|
|
to: end
|
|
|
|
}
|
|
|
|
|
|
|
|
this.getMessageMonitorData(params, 'received_message')
|
|
|
|
this.getMessageMonitorData(params, 'sent_message')
|
|
|
|
},
|
|
|
|
|
|
|
|
/************************************ jvm cpu使用率趋势 **************************************/
|
|
|
|
/*handleDisabledDate (time, selectTime) {
|
|
|
|
// 是否限制的判断条件
|
|
|
|
if (selectTime) {
|
|
|
|
// 这里就是限制的关键,大于或者小于选择的时间
|
|
|
|
let maxDate = new Date(selectTime)
|
|
|
|
maxDate.setMonth(maxDate.getMonth() + 1)
|
|
|
|
|
|
|
|
let minDate = new Date(selectTime)
|
|
|
|
minDate.setMonth(minDate.getMonth() - 1)
|
|
|
|
|
|
|
|
return time > maxDate || time < minDate
|
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
jvmCpuPickerOptions () {
|
|
|
|
const handleDisabledDate = this.handleDisabledDate
|
|
|
|
const getLastHour = this.getLastHour
|
|
|
|
const getTodayTime = this.getTodayTime
|
|
|
|
const getLastWeek = this.getLastWeek
|
|
|
|
let selectTime;
|
|
|
|
return {
|
|
|
|
// 点击时,选择的是开始时间,也就是minDate
|
|
|
|
onPick: ({ maxDate, minDate }) => {
|
|
|
|
selectTime = minDate.getTime()
|
|
|
|
if (maxDate) {
|
|
|
|
// 解除限制
|
|
|
|
selectTime = undefined
|
|
|
|
}
|
|
|
|
},
|
|
|
|
disabledDate(time) {
|
|
|
|
return handleDisabledDate(time, selectTime)
|
|
|
|
},
|
|
|
|
shortcuts: [{
|
|
|
|
text: '最近一小时',
|
|
|
|
onClick(picker) {
|
|
|
|
picker.$emit('pick', getLastHour());
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
text: '今日',
|
|
|
|
onClick(picker) {
|
|
|
|
picker.$emit('pick', getTodayTime());
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
text: '近一周',
|
|
|
|
onClick(picker) {
|
|
|
|
picker.$emit('pick', getLastWeek());
|
|
|
|
}
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/!** 初始jvm cup趋势chart *!/
|
|
|
|
jvmCpuTrendsChartInit() {
|
|
|
|
this.jvmCpuTrendsChart = echarts.init(this.$refs.jvmCpuTrends)
|
|
|
|
this.jvmCpuTrendsChart.setOption({
|
|
|
|
tooltip: {
|
|
|
|
trigger: 'axis',
|
|
|
|
formatter: '{b} <br/>{a} : ' + '{c}' + 'MB'
|
|
|
|
},
|
|
|
|
calculable: false,
|
|
|
|
xAxis: [
|
|
|
|
{
|
|
|
|
type: 'category',
|
|
|
|
boundaryGap: false,
|
|
|
|
data: []
|
|
|
|
}
|
|
|
|
],
|
|
|
|
yAxis: [
|
|
|
|
{
|
|
|
|
type: 'value',
|
|
|
|
name: '单位:%',
|
|
|
|
nameTextStyle: {
|
|
|
|
color: 'rgb(127, 63, 0)',
|
|
|
|
fontStyle: 'normal',
|
|
|
|
align: 'center',
|
|
|
|
baseline: 'middle'
|
|
|
|
},
|
|
|
|
scale: true,
|
|
|
|
boundaryGap: true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
name: 'JVM使用',
|
|
|
|
type: 'line',
|
|
|
|
stack: '总量',
|
|
|
|
itemStyle: {
|
|
|
|
normal: {
|
|
|
|
areaStyle: {
|
|
|
|
type: 'default'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data: [],
|
|
|
|
smooth: true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
grid: {
|
|
|
|
height: '80%',
|
|
|
|
width: '90%',
|
|
|
|
x: '5%',
|
|
|
|
y: '10%'
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
/!** jvm cpu使用率日期控件选择事件 *!/
|
|
|
|
jvmCpuTrendsChange(date) {
|
|
|
|
getDashboardData([{
|
|
|
|
dashboard: 'jvmMonitor',
|
|
|
|
object: 'stats',
|
|
|
|
measurement: 'info',
|
|
|
|
dimension: 'history',
|
|
|
|
group: 'jvm',
|
|
|
|
params: {
|
|
|
|
from: date[0],
|
|
|
|
to: date[1],
|
|
|
|
format: 'YYYY-MM-dd HH:mm'
|
|
|
|
}
|
|
|
|
}],
|
|
|
|
{
|
|
|
|
repeatSubmit: false
|
|
|
|
})
|
|
|
|
.then(({ data }) => {
|
|
|
|
console.log(data)
|
|
|
|
})
|
|
|
|
|
|
|
|
},*/
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.meter-chart {
|
|
|
|
height: 200px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.meter-title {
|
|
|
|
font-size: 20px
|
|
|
|
}
|
|
|
|
</style>
|