diff --git a/src/api/link/dashboard.ts b/src/api/link/dashboard.ts new file mode 100644 index 00000000..5b39594f --- /dev/null +++ b/src/api/link/dashboard.ts @@ -0,0 +1,12 @@ +import server from '@/utils/request'; + +export const dashboard = (data: object) => + server.post(`/dashboard/_multi`, data); +export const productCount = (data: object) => + server.post(`/device-product/_count`, data); +export const getGeo = (data: object) => + server.post(`/geo/object/device/_search/geo.json`, data); +export const deviceCount = (data: object) => + server.get(`/device/instance/_count`, data); +export const serverNode = (data: object) => + server.get(`/dashboard/cluster/nodes`, data); diff --git a/src/views/link/DashBoard/components/Cpu.vue b/src/views/link/DashBoard/components/Cpu.vue new file mode 100644 index 00000000..0dd9da8f --- /dev/null +++ b/src/views/link/DashBoard/components/Cpu.vue @@ -0,0 +1,189 @@ + + + + + CPU使用率趋势 + + + + + + 最近1小时 + + + 今日 + + + 近一周 + + + + + + + + +m + + + diff --git a/src/views/link/DashBoard/components/Jvm.vue b/src/views/link/DashBoard/components/Jvm.vue new file mode 100644 index 00000000..c2425cf9 --- /dev/null +++ b/src/views/link/DashBoard/components/Jvm.vue @@ -0,0 +1,196 @@ + + + + + JVM内存使用率趋势 + + + + + + 最近1小时 + + + 今日 + + + 近一周 + + + + + + + + + + + + diff --git a/src/views/link/DashBoard/components/Network.vue b/src/views/link/DashBoard/components/Network.vue new file mode 100644 index 00000000..22639768 --- /dev/null +++ b/src/views/link/DashBoard/components/Network.vue @@ -0,0 +1,222 @@ + + + + + + 网络流量 + + + 上行 + + + 下行 + + + + + + + 最近1小时 + + 今日 + 近一周 + + + + + + + + + + + + + + + + + diff --git a/src/views/link/DashBoard/components/TopCard.vue b/src/views/link/DashBoard/components/TopCard.vue new file mode 100644 index 00000000..27ecab3e --- /dev/null +++ b/src/views/link/DashBoard/components/TopCard.vue @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/link/DashBoard/components/TopEchartsItemNode.vue b/src/views/link/DashBoard/components/TopEchartsItemNode.vue new file mode 100644 index 00000000..0a7af873 --- /dev/null +++ b/src/views/link/DashBoard/components/TopEchartsItemNode.vue @@ -0,0 +1,282 @@ + + + + {{ title }} + + {{ value || 0 }} {{ formatter || '%' }} + + {{ bottom }} + + + + + + + + + + diff --git a/src/views/link/DashBoard/components/tool.ts b/src/views/link/DashBoard/components/tool.ts new file mode 100644 index 00000000..0a0d77fb --- /dev/null +++ b/src/views/link/DashBoard/components/tool.ts @@ -0,0 +1,125 @@ +import moment from 'moment'; +import * as echarts from 'echarts'; + +export const getInterval = (type) => { + switch (type) { + case 'year': + return '30d'; + case 'month': + case 'week': + return '1d'; + case 'hour': + return '1m'; + default: + return '1h'; + } +}; +export const getTimeFormat = (type) => { + switch (type) { + case 'year': + return 'YYYY-MM-DD'; + case 'month': + case 'week': + return 'MM-DD'; + case 'hour': + return 'HH:mm'; + default: + return 'HH'; + } +}; + +export const getTimeByType = (type) => { + switch (type) { + case 'hour': + return moment().subtract(1, 'hours'); + case 'week': + return moment().subtract(6, 'days'); + case 'month': + return moment().subtract(29, 'days'); + case 'year': + return moment().subtract(365, 'days'); + default: + return moment().startOf('day'); + } +}; + +export const arrayReverse = (data) => { + const newArray = []; + for (let i = data.length - 1; i >= 0; i--) { + newArray.push(data[i]); + } + return newArray; +}; + +export const networkParams = (val) => [ + { + dashboard: 'systemMonitor', + object: 'network', + measurement: 'traffic', + dimension: 'agg', + group: 'network', + params: { + type: val.type, + interval: getInterval(val.time.type), + from: moment(val.time.time[0]).valueOf(), + to: moment(val.time.time[1]).valueOf(), + }, + }, +]; +export const defulteParamsData = (group, val) => [ + { + dashboard: 'systemMonitor', + object: 'stats', + measurement: 'info', + dimension: 'history', + group, + params: { + from: moment(val.time[0]).valueOf(), + to: moment(val.time[1]).valueOf(), + }, + }, +]; + +export const areaStyle = { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 1, + color: 'rgba(151, 154, 255, 0)', + }, + { + offset: 0, + color: 'rgba(151, 154, 255, .24)', + }, + ]), +}; +export const areaStyleCpu = { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 1, + color: 'rgba(44, 182, 224, 0)', + }, + { + offset: 0, + color: 'rgba(44, 182, 224, .24)', + }, + ]), +}; +export const areaStyleJvm = { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 1, + color: 'rgba(96, 223, 199, 0)', + }, + { + offset: 0, + color: 'rgba(96, 223, 199, .24)', + }, + ]), +}; + +export const typeDataLine = [ + { + data: [], + type: 'line', + }, +]; diff --git a/src/views/link/DashBoard/index.vue b/src/views/link/DashBoard/index.vue new file mode 100644 index 00000000..2b432a56 --- /dev/null +++ b/src/views/link/DashBoard/index.vue @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + +