diff --git a/agent/app/dto/dashboard.go b/agent/app/dto/dashboard.go index 570820a17..44a3045e0 100644 --- a/agent/app/dto/dashboard.go +++ b/agent/app/dto/dashboard.go @@ -116,6 +116,9 @@ type DashboardCurrent struct { GPUData []GPUInfo `json:"gpuData"` XPUData []XPUInfo `json:"xpuData"` + TopCPUItems []Process `json:"topCPUItems"` + TopMemItems []Process `json:"topMemItems"` + ShotTime time.Time `json:"shotTime"` } diff --git a/agent/app/service/dashboard.go b/agent/app/service/dashboard.go index 6e293bcc6..5792c59df 100644 --- a/agent/app/service/dashboard.go +++ b/agent/app/service/dashboard.go @@ -120,7 +120,7 @@ func (u *DashboardService) LoadCurrentInfoForNode() *dto.NodeCurrent { memoryInfo, _ := mem.VirtualMemory() currentInfo.MemoryTotal = memoryInfo.Total currentInfo.MemoryAvailable = memoryInfo.Available - currentInfo.MemoryUsed = memoryInfo.Used + memoryInfo.Shared + currentInfo.MemoryUsed = memoryInfo.Used currentInfo.MemoryUsedPercent = memoryInfo.UsedPercent swapInfo, _ := mem.SwapMemory() @@ -194,7 +194,7 @@ func (u *DashboardService) LoadCurrentInfo(ioOption string, netOption string) *d memoryInfo, _ := mem.VirtualMemory() currentInfo.MemoryTotal = memoryInfo.Total - currentInfo.MemoryUsed = memoryInfo.Used + memoryInfo.Shared + currentInfo.MemoryUsed = memoryInfo.Used currentInfo.MemoryFree = memoryInfo.Free currentInfo.MemoryCache = memoryInfo.Cached + memoryInfo.Buffers currentInfo.MemoryShard = memoryInfo.Shared @@ -211,6 +211,9 @@ func (u *DashboardService) LoadCurrentInfo(ioOption string, netOption string) *d currentInfo.GPUData = loadGPUInfo() currentInfo.XPUData = loadXpuInfo() + currentInfo.TopCPUItems = loadTopCPU() + currentInfo.TopMemItems = loadTopMem() + if ioOption == "all" { diskInfo, _ := disk.IOCounters() for _, state := range diskInfo { diff --git a/agent/app/service/monitor.go b/agent/app/service/monitor.go index ca96d7bad..f09d94773 100644 --- a/agent/app/service/monitor.go +++ b/agent/app/service/monitor.go @@ -183,7 +183,7 @@ func (m *MonitorService) Run() { if len(totalPercent) == 1 { itemModel.Cpu = totalPercent[0] } - topCPU := m.loadTopCPU() + topCPU := loadTopCPU() if len(topCPU) != 0 { topItemCPU, err := json.Marshal(topCPU) if err == nil { @@ -199,7 +199,7 @@ func (m *MonitorService) Run() { memoryInfo, _ := mem.VirtualMemory() itemModel.Memory = memoryInfo.UsedPercent - topMem := m.loadTopMem() + topMem := loadTopMem() if len(topMem) != 0 { topMemItem, err := json.Marshal(topMem) if err == nil { @@ -350,7 +350,7 @@ func (m *MonitorService) saveNetDataToDB(ctx context.Context, interval float64) } } -func (m *MonitorService) loadTopCPU() []dto.Process { +func loadTopCPU() []dto.Process { processes, err := process.Processes() if err != nil { return nil @@ -400,7 +400,7 @@ func (m *MonitorService) loadTopCPU() []dto.Process { return top5 } -func (m *MonitorService) loadTopMem() []dto.Process { +func loadTopMem() []dto.Process { processes, err := process.Processes() if err != nil { return nil diff --git a/frontend/src/api/interface/dashboard.ts b/frontend/src/api/interface/dashboard.ts index abb640740..a87e36b18 100644 --- a/frontend/src/api/interface/dashboard.ts +++ b/frontend/src/api/interface/dashboard.ts @@ -103,11 +103,22 @@ export namespace Dashboard { gpuData: Array; xpuData: Array; + topCPUItems: Array; + topMemItems: Array; + netBytesSent: number; netBytesRecv: number; shotTime: Date; } + export interface Process { + name: string; + pid: number; + percent: number; + memory: number; + cmd: string; + user: string; + } export interface DiskInfo { path: string; type: string; diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index fc96ac4b3..bc52d27ab 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -426,7 +426,7 @@ const message = { ioDelay: 'I/O latency', uptime: 'Uptime', runningTime: 'Up since', - mem: 'System', + mem: 'System Memory', swapMem: 'Swap Partition', runSmoothly: 'Low load', @@ -436,6 +436,9 @@ const message = { core: 'Physical core', logicCore: 'Logical core', + corePercent: 'Core Usage', + cpuTop: 'Top 5 Processes by CPU Usage', + memTop: 'Top 5 Processes by Memory Usage', loadAverage: 'Load average in the last 1 minute | Load average in the last {n} minutes', load: 'Load', mount: 'Mount point', @@ -3009,6 +3012,9 @@ const message = { stopProcess: 'End', viewDetails: 'View details', stopProcessWarn: 'Are you sure you want to end this process (PID:{0})?', + kill: 'Kill Process', + killNow: 'Kill Now', + killHelper: 'Killing process {0} may cause some programs to malfunction. Continue?', processName: 'Process name', }, tool: { diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index d579940e2..02545d4db 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -434,7 +434,7 @@ const message = { ioDelay: 'Latencia de E/S', uptime: 'Tiempo en funcionamiento', runningTime: 'Desde', - mem: 'Sistema', + mem: 'Memoria del Sistema', swapMem: 'Partición swap', runSmoothly: 'Carga baja', runNormal: 'Carga moderada', @@ -442,6 +442,9 @@ const message = { runJam: 'Carga pesada', core: 'Núcleo físico', logicCore: 'Núcleo lógico', + corePercent: 'Uso del Núcleo', + cpuTop: 'Top 5 de Procesos por Uso de CPU', + memTop: 'Top 5 de Procesos por Uso de Memoria', loadAverage: 'Promedio de carga en el último minuto | Promedio de carga en los últimos {n} minutos', load: 'Carga', mount: 'Punto de montaje', @@ -2982,6 +2985,9 @@ const message = { stopProcess: 'Finalizar', viewDetails: 'Ver detalles', stopProcessWarn: '¿Seguro que deseas finalizar este proceso (PID:{0})?', + kill: 'Terminar Proceso', + killNow: 'Terminar Ahora', + killHelper: 'Terminar el proceso {0} puede hacer que algunos programas funcionen incorrectamente. ¿Continuar?', processName: 'Nombre del proceso', }, tool: { diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 7b887991e..0e0c3f94e 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -415,7 +415,7 @@ const message = { ioDelay: 'I/Oレイテンシ', uptime: 'それ以来', runningTime: '稼働時間', - mem: 'システム', + mem: 'システムメモリ', swapMem: 'パーティションを交換します', runSmoothly: '低負荷', @@ -425,6 +425,9 @@ const message = { core: '物理コア', logicCore: '論理コア', + corePercent: 'コア使用率', + cpuTop: 'CPU使用率トップ5のプロセス情報', + memTop: 'メモリ使用率トップ5のプロセス情報', loadAverage: '最後の1分で平均を積み込みます|最後の{n}分で平均を読み込みます', load: '負荷', mount: 'マウントポイント', @@ -2907,6 +2910,9 @@ const message = { stopProcess: '終わり', viewDetails: '詳細', stopProcessWarn: 'このプロセスを終了したいですか(PID:{0})?', + kill: 'プロセス終了', + killNow: '今すぐ終了', + killHelper: 'プロセス {0} を終了すると一部のプログラムが正常に動作しなくなる可能性があります。続行しますか?', processName: 'プロセス名', }, tool: { diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 7d56677cf..80f403a97 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -418,7 +418,7 @@ const message = { ioDelay: 'I/O 지연 시간', uptime: '작동 시간', runningTime: '가동 시간', - mem: '시스템', + mem: '시스템 메모리', swapMem: '스왑 파티션', runSmoothly: '낮은 부하', @@ -428,6 +428,9 @@ const message = { core: '물리적 코어', logicCore: '논리 코어', + corePercent: '코어 사용률', + cpuTop: 'CPU 사용률 상위 5개 프로세스 정보', + memTop: '메모리 사용률 상위 5개 프로세스 정보', loadAverage: '지난 1분의 평균 부하 | 지난 {n} 분의 평균 부하', load: '부하', mount: '마운트 지점', @@ -2856,6 +2859,10 @@ const message = { stopProcess: '종료', viewDetails: '세부 사항', stopProcessWarn: '이 프로세스(PID:{0})를 종료하시겠습니까?', + kill: '프로세스 종료', + killNow: '즉시 종료', + killHelper: + '프로세스 {0}을(를) 종료하면 일부 프로그램이 정상적으로 작동하지 않을 수 있습니다. 계속하시겠습니까?', processName: '프로세스 이름', }, tool: { diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index e0efa1c86..3fe36c3f0 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -424,7 +424,7 @@ const message = { ioDelay: 'I/O latency', uptime: 'Up since', runningTime: 'Uptime', - mem: 'System', + mem: 'Memori Sistem', swapMem: 'Swap partition', runSmoothly: 'Beban rendah', @@ -433,6 +433,9 @@ const message = { runJam: 'Beban berat', core: 'Teras Fizikal', + corePercent: 'Penggunaan Teras', + cpuTop: 'Maklumat Proses 5 Teratas Mengikut Penggunaan CPU', + memTop: 'Maklumat Proses 5 Teratas Mengikut Penggunaan Memori', logicCore: 'Teras Logik', loadAverage: 'Purata beban dalam 1 minit terakhir | Purata beban dalam {n} minit terakhir', load: 'Beban', @@ -2973,6 +2976,10 @@ const message = { stopProcess: 'End', viewDetails: 'Details', stopProcessWarn: 'Are you sure you want to end this process (PID:{0})?', + kill: 'Hentikan Proses', + killNow: 'Hentikan Sekarang', + killHelper: + 'Menghentikan proses {0} mungkin menyebabkan beberapa program tidak berfungsi dengan normal. Teruskan?', processName: 'Process name', }, tool: { diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 67650ddec..29dbc6794 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -422,7 +422,7 @@ const message = { ioDelay: 'Latência de I/O', uptime: 'Tempo de atividade', runningTime: 'Tempo de execução', - mem: 'Memória', + mem: 'Memória do Sistema', swapMem: 'Partição Swap', runSmoothly: 'Baixo carregamento', @@ -432,6 +432,9 @@ const message = { core: 'Núcleo físico', logicCore: 'Núcleo lógico', + corePercent: 'Uso do Núcleo', + cpuTop: 'Top 5 Processos por Uso de CPU', + memTop: 'Top 5 Processos por Uso de Memória', loadAverage: 'Média de carga nos últimos 1 minuto | Média de carga nos últimos {n} minutos', load: 'Carga', mount: 'Ponto de montagem', @@ -2978,6 +2981,9 @@ const message = { stopProcess: 'Encerrar', viewDetails: 'Detalhes', stopProcessWarn: 'Tem certeza de que deseja encerrar este processo (PID:{0})?', + kill: 'Encerrar Processo', + killNow: 'Encerrar Agora', + killHelper: 'Encerrar o processo {0} pode fazer com que alguns programas funcionem incorretamente. Continuar?', processName: 'Nome do Processo', }, tool: { diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index a5363106b..dd2225e36 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -419,7 +419,7 @@ const message = { ioDelay: 'Задержка ввода/вывода', uptime: 'Работает с', runningTime: 'Время работы', - mem: 'Память', + mem: 'Системная Память', swapMem: 'Раздел подкачки', runSmoothly: 'Низкая нагрузка', @@ -429,6 +429,9 @@ const message = { core: 'Физических ядер', logicCore: 'Логических ядер', + corePercent: 'Использование Ядра', + cpuTop: 'Топ 5 Процессов по Использованию ЦПУ', + memTop: 'Топ 5 Процессов по Использованию Памяти', loadAverage: 'Средняя нагрузка за последнюю минуту | Средняя нагрузка за последние {n} минут', load: 'Нагрузка', mount: 'Точка монтирования', @@ -2971,6 +2974,9 @@ const message = { stopProcess: 'Завершить', viewDetails: 'Подробности', stopProcessWarn: 'Вы уверены, что хотите завершить этот процесс (PID:{0})?', + kill: 'Завершить Процесс', + killNow: 'Завершить Сейчас', + killHelper: 'Завершение процесса {0} может привести к некорректной работе некоторых программ. Продолжить?', processName: 'Имя процесса', }, tool: { diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index b1270a719..19a703bb2 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -430,7 +430,7 @@ const message = { ioDelay: 'G/Ç gecikmesi', uptime: 'Çalışma süresi', runningTime: 'Şu tarihten beri açık', - mem: 'Sistem', + mem: 'Sistem Belleği', swapMem: 'Swap Bölümü', runSmoothly: 'Düşük yük', @@ -440,6 +440,9 @@ const message = { core: 'Fiziksel çekirdek', logicCore: 'Mantıksal çekirdek', + corePercent: 'Çekirdek Kullanımı', + cpuTop: 'CPU Kullanımına Göre İlk 5 İşlem', + memTop: 'Bellek Kullanımına Göre İlk 5 İşlem', loadAverage: 'Son 1 dakikadaki yük ortalaması | Son {n} dakikadaki yük ortalaması', load: 'Yük', mount: 'Bağlama noktası', @@ -3051,6 +3054,10 @@ const message = { stopProcess: 'Sonlandır', viewDetails: 'Detayları görüntüle', stopProcessWarn: 'Bu işlemi (PID:{0}) sonlandırmak istediğinizden emin misiniz?', + kill: 'İşlemi Sonlandır', + killNow: 'Hemen Sonlandır', + killHelper: + '{0} işlemini sonlandırmak bazı programların düzgün çalışmamasına neden olabilir. Devam etmek istiyor musunuz?', processName: 'İşlem adı', }, tool: { diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index bb129083d..72c2f4a37 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -413,7 +413,7 @@ const message = { ioDelay: '讀寫延遲', uptime: '啟動時間', runningTime: '執行時間', - mem: '系統', + mem: '系統記憶體', swapMem: 'Swap 分區', runSmoothly: '執行流暢', @@ -423,6 +423,9 @@ const message = { core: '物理核心', logicCore: '邏輯核心', + corePercent: '核心使用率', + cpuTop: 'CPU 佔用率 Top5 的行程資訊', + memTop: '記憶體佔用率 Top5 的行程資訊', loadAverage: '最近 {0} 分鐘平均負載', load: '負載', mount: '掛載點', @@ -2796,6 +2799,9 @@ const message = { stopProcess: '結束', viewDetails: '查看詳情', stopProcessWarn: '是否確定結束此行程 (PID:{0})?', + kill: '結束行程', + killNow: '立即結束', + killHelper: '結束行程 {0} 可能導致部分程式無法正常運作,是否繼續?', processName: '行程名稱', }, tool: { diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index ee21b6983..b887a732a 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -413,7 +413,7 @@ const message = { ioDelay: '读写延迟', uptime: '启动时间', runningTime: '运行时间', - mem: '系统', + mem: '系统内存', swapMem: 'Swap 分区', runSmoothly: '运行流畅', @@ -423,6 +423,9 @@ const message = { core: '物理核心', logicCore: '逻辑核心', + corePercent: '核心使用率', + cpuTop: 'CPU 占用率 Top5 的进程信息', + memTop: '内存占用率 Top5 的进程信息', loadAverage: '最近 {0} 分钟平均负载', load: '负载', mount: '挂载点', @@ -2790,6 +2793,9 @@ const message = { stopProcess: '结束', viewDetails: '查看详情', stopProcessWarn: '是否确定结束此进程 (PID:{0})?', + kill: '结束进程', + killNow: '立即结束', + killHelper: '结束进程 {0} 可能导致部分程序无法正常运行,是否继续?', processName: '进程名称', }, tool: { diff --git a/frontend/src/views/home/index.vue b/frontend/src/views/home/index.vue index 307cf8092..ed0588ef8 100644 --- a/frontend/src/views/home/index.vue +++ b/frontend/src/views/home/index.vue @@ -1,5 +1,5 @@