From b06058ec18815e26b09cd23646548544a7570449 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Wed, 29 Mar 2023 21:28:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=A6=82?= =?UTF-8?q?=E8=A7=88=E9=A1=B5=E6=9C=AA=E6=98=BE=E7=A4=BA=E6=8C=82=E8=BD=BD?= =?UTF-8?q?=E7=A3=81=E7=9B=98=E4=BF=A1=E6=81=AF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/dto/dashboard.go | 17 ++++--- backend/app/service/dashboard.go | 46 +++++++++++++++---- frontend/src/api/interface/dashboard.ts | 16 ++++--- frontend/src/lang/modules/en.ts | 2 + frontend/src/lang/modules/zh.ts | 2 + frontend/src/views/home/index.vue | 10 +---- frontend/src/views/home/status/index.vue | 56 ++++++++++++------------ 7 files changed, 94 insertions(+), 55 deletions(-) diff --git a/backend/app/dto/dashboard.go b/backend/app/dto/dashboard.go index 3afb240ad..f55ddd7ba 100644 --- a/backend/app/dto/dashboard.go +++ b/backend/app/dto/dashboard.go @@ -58,6 +58,18 @@ type DashboardCurrent struct { IOReadTime uint64 `json:"ioReadTime"` IOWriteTime uint64 `json:"ioWriteTime"` + DiskData []DiskInfo `json:"diskData"` + + NetBytesSent uint64 `json:"netBytesSent"` + NetBytesRecv uint64 `json:"netBytesRecv"` + + ShotTime time.Time `json:"shotTime"` +} + +type DiskInfo struct { + Path string `json:"path"` + Type string `json:"type"` + Device string `json:"device"` Total uint64 `json:"total"` Free uint64 `json:"free"` Used uint64 `json:"used"` @@ -67,9 +79,4 @@ type DashboardCurrent struct { InodesUsed uint64 `json:"inodesUsed"` InodesFree uint64 `json:"inodesFree"` InodesUsedPercent float64 `json:"inodesUsedPercent"` - - NetBytesSent uint64 `json:"netBytesSent"` - NetBytesRecv uint64 `json:"netBytesRecv"` - - ShotTime time.Time `json:"shotTime"` } diff --git a/backend/app/service/dashboard.go b/backend/app/service/dashboard.go index 35d4d7d7d..0d3c80524 100644 --- a/backend/app/service/dashboard.go +++ b/backend/app/service/dashboard.go @@ -120,15 +120,7 @@ func (u *DashboardService) LoadCurrentInfo(ioOption string, netOption string) *d currentInfo.MemoryUsed = memoryInfo.Used currentInfo.MemoryUsedPercent = memoryInfo.UsedPercent - state, _ := disk.Usage("/") - currentInfo.Total = state.Total - currentInfo.Free = state.Free - currentInfo.Used = state.Used - currentInfo.UsedPercent = state.UsedPercent - currentInfo.InodesTotal = state.InodesTotal - currentInfo.InodesUsed = state.InodesUsed - currentInfo.InodesFree = state.InodesFree - currentInfo.InodesUsedPercent = state.InodesUsedPercent + currentInfo.DiskData = loadDiskInfo() if ioOption == "all" { diskInfo, _ := disk.IOCounters() @@ -169,3 +161,39 @@ func (u *DashboardService) LoadCurrentInfo(ioOption string, netOption string) *d currentInfo.ShotTime = time.Now() return ¤tInfo } + +func loadDiskInfo() []dto.DiskInfo { + var datas []dto.DiskInfo + parts, err := disk.Partitions(false) + if err != nil { + return datas + } + var excludes = []string{"/mnt/cdrom", "/boot", "/boot/efi", "/dev", "/dev/shm", "/run/lock", "/run", "/run/shm", "/run/user"} + for _, part := range parts { + isExclude := false + for _, exclude := range excludes { + if part.Mountpoint == exclude { + isExclude = true + break + } + } + if isExclude { + continue + } + state, _ := disk.Usage("/") + var itemData dto.DiskInfo + itemData.Path = part.Mountpoint + itemData.Type = part.Fstype + itemData.Device = part.Device + itemData.Total = state.Total + itemData.Free = state.Free + itemData.Used = state.Used + itemData.UsedPercent = state.UsedPercent + itemData.InodesTotal = state.InodesTotal + itemData.InodesUsed = state.InodesUsed + itemData.InodesFree = state.InodesFree + itemData.InodesUsedPercent = state.InodesUsedPercent + datas = append(datas, itemData) + } + return datas +} diff --git a/frontend/src/api/interface/dashboard.ts b/frontend/src/api/interface/dashboard.ts index 93eebb67c..ef2fee0e7 100644 --- a/frontend/src/api/interface/dashboard.ts +++ b/frontend/src/api/interface/dashboard.ts @@ -53,6 +53,17 @@ export namespace Dashboard { ioReadTime: number; ioWriteTime: number; + diskData: Array; + + netBytesSent: number; + netBytesRecv: number; + + shotTime: Date; + } + export interface DiskInfo { + path: string; + type: string; + device: string; total: number; free: number; used: number; @@ -62,10 +73,5 @@ export namespace Dashboard { inodesUsed: number; inodesFree: number; inodesUsedPercent: number; - - netBytesSent: number; - netBytesRecv: number; - - shotTime: Date; } } diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index deeda9f0e..b7dc85dcf 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -229,6 +229,7 @@ const message = { kernelArch: 'Kernel arch', network: 'Network', io: 'Disk IO', + baseInfo: 'Base info', totalSend: 'Total send', totalRecv: 'Total recv', rwPerSecond: 'IO times', @@ -251,6 +252,7 @@ const message = { loadAverage: 'Average load in the last {0} minutes', load: 'Load', mount: 'Mount point', + fileSystem: 'File system', total: 'Total', used: 'Used', free: 'Free', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 6886ff104..a9a149bea 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -233,6 +233,7 @@ const message = { kernelArch: '系统类型', network: '流量', io: '磁盘 IO', + baseInfo: '基本信息', totalSend: '总发送', totalRecv: '总接收', rwPerSecond: '读写次数', @@ -255,6 +256,7 @@ const message = { loadAverage: '最近 {0} 分钟平均负载', load: '负载', mount: '挂载点', + fileSystem: '文件系统', total: '总数', used: '已用', free: '可用', diff --git a/frontend/src/views/home/index.vue b/frontend/src/views/home/index.vue index d43cbf6ce..a63471844 100644 --- a/frontend/src/views/home/index.vue +++ b/frontend/src/views/home/index.vue @@ -286,15 +286,7 @@ const currentInfo = ref({ ioReadTime: 0, ioWriteTime: 0, - total: 0, - free: 0, - used: 0, - usedPercent: 0, - - inodesTotal: 0, - inodesUsed: 0, - inodesFree: 0, - inodesUsedPercent: 0, + diskData: [], netBytesSent: 0, netBytesRecv: 0, diff --git a/frontend/src/views/home/status/index.vue b/frontend/src/views/home/status/index.vue index 4831d1dae..7ee2f9a97 100644 --- a/frontend/src/views/home/status/index.vue +++ b/frontend/src/views/home/status/index.vue @@ -60,45 +60,48 @@ {{ loadStatus(currentInfo.loadUsagePercent) }} - - + + - {{ $t('home.mount') }}: / -
iNode
- {{ $t('home.total') }}: {{ currentInfo.inodesTotal }} - {{ $t('home.used') }}: {{ currentInfo.inodesUsed }} - {{ $t('home.free') }}: {{ currentInfo.inodesFree }} + {{ $t('home.baseInfo') }}: + {{ $t('home.mount') }}: {{ item.path }} + {{ $t('commons.table.type') }}: {{ item.type }} + {{ $t('home.fileSystem') }}: {{ item.device }} +
Inode:
+ {{ $t('home.total') }}: {{ item.inodesTotal }} + {{ $t('home.used') }}: {{ item.inodesUsed }} + {{ $t('home.free') }}: {{ item.inodesFree }} - {{ $t('home.percent') }}: {{ formatNumber(currentInfo.inodesUsedPercent) }}% + {{ $t('home.percent') }}: {{ formatNumber(item.inodesUsedPercent) }}%
- {{ $t('monitor.disk') }} + {{ $t('monitor.disk') }}:
- {{ $t('home.total') }}: {{ formatNumber(currentInfo.total / 1024 / 1024 / 1024) }} GB + {{ $t('home.total') }}: {{ formatNumber(item.total / 1024 / 1024 / 1024) }} GB - {{ $t('home.used') }}: {{ formatNumber(currentInfo.used / 1024 / 1024 / 1024) }} GB + {{ $t('home.used') }}: {{ formatNumber(item.used / 1024 / 1024 / 1024) }} GB - {{ $t('home.free') }}: {{ formatNumber(currentInfo.free / 1024 / 1024 / 1024) }} GB + {{ $t('home.free') }}: {{ formatNumber(item.free / 1024 / 1024 / 1024) }} GB - {{ $t('home.percent') }}: {{ formatNumber(currentInfo.usedPercent) }}% + {{ $t('home.percent') }}: {{ formatNumber(item.usedPercent) }}%
- ( {{ formatNumber(currentInfo.used / 1024 / 1024 / 1024) }} / - {{ formatNumber(currentInfo.total / 1024 / 1024 / 1024) }} ) GB + ( {{ formatNumber(item.used / 1024 / 1024 / 1024) }} / + {{ formatNumber(item.total / 1024 / 1024 / 1024) }} ) GB
@@ -161,18 +164,11 @@ const currentInfo = ref({ ioReadBytes: 0, ioWriteBytes: 0, - ioTime: 0, ioCount: 0, + ioReadTime: 0, + ioWriteTime: 0, - total: 0, - free: 0, - used: 0, - usedPercent: 0, - - inodesTotal: 0, - inodesUsed: 0, - inodesFree: 0, - inodesUsedPercent: 0, + diskData: [], netBytesSent: 0, netBytesRecv: 0, @@ -185,7 +181,13 @@ const acceptParams = (current: Dashboard.CurrentInfo, base: Dashboard.BaseInfo): freshChart('cpu', 'CPU', formatNumber(currentInfo.value.cpuUsedPercent)); freshChart('memory', i18n.global.t('monitor.memory'), formatNumber(currentInfo.value.MemoryUsedPercent)); freshChart('load', i18n.global.t('home.load'), formatNumber(currentInfo.value.loadUsagePercent)); - freshChart('disk', i18n.global.t('monitor.disk'), formatNumber(currentInfo.value.usedPercent)); + for (let i = 0; i < currentInfo.value.diskData.length; i++) { + freshChart( + 'disk' + i, + currentInfo.value.diskData[i].path, + formatNumber(currentInfo.value.diskData[i].usedPercent), + ); + } }; const freshChart = (chartName: string, Title: string, Data: number) => {