Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion agent/app/dto/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ type MonitorSetting struct {
MonitorStoreDays string `json:"monitorStoreDays"`
MonitorInterval string `json:"monitorInterval"`
DefaultNetwork string `json:"defaultNetwork"`
DefaultIO string `json:"defaultIO"`
}

type MonitorSettingUpdate struct {
Key string `json:"key" validate:"required,oneof=MonitorStatus MonitorStoreDays MonitorInterval DefaultNetwork"`
Key string `json:"key" validate:"required,oneof=MonitorStatus MonitorStoreDays MonitorInterval DefaultNetwork DefaultIO"`
Value string `json:"value"`
}
1 change: 1 addition & 0 deletions agent/app/dto/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type SettingInfo struct {
NtpSite string `json:"ntpSite"`

DefaultNetwork string `json:"defaultNetwork"`
DefaultIO string `json:"defaultIO"`
LastCleanTime string `json:"lastCleanTime"`
LastCleanSize string `json:"lastCleanSize"`
LastCleanData string `json:"lastCleanData"`
Expand Down
29 changes: 19 additions & 10 deletions agent/app/service/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func (m *MonitorService) LoadMonitorData(req dto.MonitorSearch) ([]dto.MonitorDa
data = append(data, itemData)
}
if req.Param == "all" || req.Param == "io" {
bases, err := monitorRepo.GetIO(repo.WithByCreatedAt(req.StartTime, req.EndTime))
bases, err := monitorRepo.GetIO(repo.WithByName(req.Info), repo.WithByCreatedAt(req.StartTime, req.EndTime))
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -201,9 +201,18 @@ func (m *MonitorService) Run() {
func (m *MonitorService) loadDiskIO() {
ioStat, _ := disk.IOCounters()
var diskIOList []disk.IOCountersStat
var ioStatAll disk.IOCountersStat
for _, io := range ioStat {
ioStatAll.Name = "all"
ioStatAll.ReadBytes += io.ReadBytes
ioStatAll.WriteBytes += io.WriteBytes
ioStatAll.ReadTime += io.ReadTime
ioStatAll.WriteTime += io.WriteTime
ioStatAll.WriteCount += io.WriteCount
ioStatAll.ReadCount += io.ReadCount
diskIOList = append(diskIOList, io)
}
diskIOList = append(diskIOList, ioStatAll)
m.DiskIO <- diskIOList
}

Expand Down Expand Up @@ -234,29 +243,29 @@ func (m *MonitorService) saveIODataToDB(ctx context.Context, interval float64) {
var itemIO model.MonitorIO
itemIO.Name = io1.Name
if io2.ReadBytes != 0 && io1.ReadBytes != 0 && io2.ReadBytes > io1.ReadBytes {
itemIO.Read = uint64(float64(io2.ReadBytes-io1.ReadBytes) / interval / 60)
itemIO.Read = uint64(float64(io2.ReadBytes-io1.ReadBytes) / interval)
}
if io2.WriteBytes != 0 && io1.WriteBytes != 0 && io2.WriteBytes > io1.WriteBytes {
itemIO.Write = uint64(float64(io2.WriteBytes-io1.WriteBytes) / interval / 60)
itemIO.Write = uint64(float64(io2.WriteBytes-io1.WriteBytes) / interval)
}

if io2.ReadCount != 0 && io1.ReadCount != 0 && io2.ReadCount > io1.ReadCount {
itemIO.Count = uint64(float64(io2.ReadCount-io1.ReadCount) / interval / 60)
itemIO.Count = uint64(float64(io2.ReadCount-io1.ReadCount) / interval)
}
writeCount := uint64(0)
if io2.WriteCount != 0 && io1.WriteCount != 0 && io2.WriteCount > io1.WriteCount {
writeCount = uint64(float64(io2.WriteCount-io1.WriteCount) / interval * 60)
writeCount = uint64(float64(io2.WriteCount-io1.WriteCount) / interval)
}
if writeCount > itemIO.Count {
itemIO.Count = writeCount
}

if io2.ReadTime != 0 && io1.ReadTime != 0 && io2.ReadTime > io1.ReadTime {
itemIO.Time = uint64(float64(io2.ReadTime-io1.ReadTime) / interval / 60)
itemIO.Time = uint64(float64(io2.ReadTime-io1.ReadTime) / interval)
}
writeTime := uint64(0)
if io2.WriteTime != 0 && io1.WriteTime != 0 && io2.WriteTime > io1.WriteTime {
writeTime = uint64(float64(io2.WriteTime-io1.WriteTime) / interval / 60)
writeTime = uint64(float64(io2.WriteTime-io1.WriteTime) / interval)
}
if writeTime > itemIO.Time {
itemIO.Time = writeTime
Expand Down Expand Up @@ -294,10 +303,10 @@ func (m *MonitorService) saveNetDataToDB(ctx context.Context, interval float64)
itemNet.Name = net1.Name

if net2.BytesSent != 0 && net1.BytesSent != 0 && net2.BytesSent > net1.BytesSent {
itemNet.Up = float64(net2.BytesSent-net1.BytesSent) / 1024 / interval / 60
itemNet.Up = float64(net2.BytesSent-net1.BytesSent) / 1024 / interval
}
if net2.BytesRecv != 0 && net1.BytesRecv != 0 && net2.BytesRecv > net1.BytesRecv {
itemNet.Down = float64(net2.BytesRecv-net1.BytesRecv) / 1024 / interval / 60
itemNet.Down = float64(net2.BytesRecv-net1.BytesRecv) / 1024 / interval
}
netList = append(netList, itemNet)
break
Expand Down Expand Up @@ -330,7 +339,7 @@ func StartMonitor(removeBefore bool, interval string) error {
now := time.Now()
nextMinute := now.Truncate(time.Minute).Add(time.Minute)
time.AfterFunc(time.Until(nextMinute), func() {
monitorID, err := global.Cron.AddJob(fmt.Sprintf("@every %sm", interval), service)
monitorID, err := global.Cron.AddJob(fmt.Sprintf("@every %ss", interval), service)
if err != nil {
return
}
Expand Down
1 change: 1 addition & 0 deletions agent/init/migration/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func InitAgentDB() {
migrations.UpdateCronjobSpec,
migrations.UpdateWebsiteSSLAddColumn,
migrations.AddTensorRTLLMModel,
migrations.UpdateMonitorInterval,
})
if err := m.Migrate(); err != nil {
global.LOG.Error(err)
Expand Down
25 changes: 25 additions & 0 deletions agent/init/migration/migrations/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"os"
"os/user"
"path"
"strconv"
"strings"
"time"

Expand Down Expand Up @@ -634,3 +635,27 @@ var AddTensorRTLLMModel = &gormigrate.Migration{
return tx.AutoMigrate(&model.TensorRTLLM{})
},
}

var UpdateMonitorInterval = &gormigrate.Migration{
ID: "20251026-update-monitor-interval",
Migrate: func(tx *gorm.DB) error {
var monitorInterval model.Setting
if err := tx.Where("key = ?", "MonitorInterval").First(&monitorInterval).Error; err != nil {
return err
}
interval, _ := strconv.Atoi(monitorInterval.Value)
if interval == 0 {
interval = 300
}
if err := tx.Model(&model.Setting{}).
Where("key = ?", "MonitorInterval").
Updates(map[string]interface{}{"value": fmt.Sprintf("%v", interval*60)}).
Error; err != nil {
return err
}
if err := tx.Create(&model.Setting{Key: "DefaultIO", Value: "all"}).Error; err != nil {
return err
}
return nil
},
}
1 change: 1 addition & 0 deletions frontend/src/api/interface/host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ export namespace Host {

export interface MonitorSetting {
defaultNetwork: string;
defaultIO: string;
monitorStatus: string;
monitorStoreDays: string;
monitorInterval: string;
Expand Down
15 changes: 9 additions & 6 deletions frontend/src/lang/modules/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1168,11 +1168,13 @@ const message = {
},
monitor: {
globalFilter: 'Global Filter',
enableMonitor: 'Enable',
storeDays: 'Expiration days',
defaultNetwork: 'Default Network Adapter',
defaultNetworkHelper: 'Network adapter option displayed in the default monitoring and overview interface',
cleanMonitor: 'Clean monitoring records',
enableMonitor: 'Monitoring Status',
storeDays: 'Retention Days',
defaultNetwork: 'Default Network Card',
defaultNetworkHelper: 'Default network card option displayed in monitoring and overview interfaces',
defaultIO: 'Default Disk',
defaultIOHelper: 'Default disk option displayed in monitoring and overview interfaces',
cleanMonitor: 'Clear Monitoring Records',

avgLoad: 'Load average',
loadDetail: 'Load detail',
Expand All @@ -1193,7 +1195,8 @@ const message = {
network: 'Network',
up: 'Up',
down: 'Down',
interval: 'Interval(minute)',
interval: 'Collection Interval',
intervalHelper: 'Please enter an appropriate monitoring collection interval (5 seconds - 12 hours)',

gpuUtil: 'GPU Utilization',
temperature: 'Temperature',
Expand Down
18 changes: 11 additions & 7 deletions frontend/src/lang/modules/es-es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1171,13 +1171,16 @@ const message = {
},
},
monitor: {
globalFilter: 'Filtro global',
enableMonitor: 'Habilitar',
storeDays: 'Días de retención',
defaultNetwork: 'Adaptador de red predeterminado',
globalFilter: 'Filtro Global',
enableMonitor: 'Estado de Monitoreo',
storeDays: 'Días de Retención',
defaultNetwork: 'Tarjeta de Red Predeterminada',
defaultNetworkHelper:
'Opción de adaptador de red mostrada en la vista predeterminada de monitorización y resumen',
cleanMonitor: 'Limpiar registros de monitorización',
'Opción de tarjeta de red predeterminada mostrada en las interfaces de monitoreo y resumen',
defaultIO: 'Disco Predeterminado',
defaultIOHelper: 'Opción de disco predeterminada mostrada en las interfaces de monitoreo y resumen',
cleanMonitor: 'Limpiar Registros de Monitoreo',

avgLoad: 'Carga promedio',
loadDetail: 'Detalle de carga',
resourceUsage: 'Utilización',
Expand All @@ -1197,7 +1200,8 @@ const message = {
network: 'Red',
up: 'Subida',
down: 'Bajada',
interval: 'Intervalo (minutos)',
interval: 'Intervalo de Recolección',
intervalHelper: 'Ingrese un intervalo de recolección de monitoreo apropiado (5 segundos - 12 horas)',
gpuUtil: 'Uso de GPU',
temperature: 'Temperatura',
performanceState: 'Estado de rendimiento',
Expand Down
13 changes: 9 additions & 4 deletions frontend/src/lang/modules/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1131,9 +1131,13 @@ const message = {
},
monitor: {
globalFilter: 'グローバルフィルター',
enableMonitor: '有効にする',
storeDays: '有効期限',
cleanMonitor: '監視記録をきれいにします',
enableMonitor: '監視ステータス',
storeDays: '保存日数',
defaultNetwork: 'デフォルトネットワークカード',
defaultNetworkHelper: '監視および概要インターフェースに表示されるデフォルトのネットワークカードオプション',
defaultIO: 'デフォルトディスク',
defaultIOHelper: '監視および概要インターフェースに表示されるデフォルトのディスクオプション',
cleanMonitor: '監視記録をクリア',

avgLoad: 'ロード平均',
loadDetail: '詳細を読み込みます',
Expand All @@ -1152,7 +1156,8 @@ const message = {
network: 'ネットワーク',
up: '上',
down: '下',
interval: '間隔(分)',
interval: '収集間隔',
intervalHelper: '適切な監視収集間隔を入力してください(5秒 - 12時間)',

gpuUtil: 'GPU利用',
temperature: '温度',
Expand Down
13 changes: 9 additions & 4 deletions frontend/src/lang/modules/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1123,9 +1123,13 @@ const message = {
},
monitor: {
globalFilter: '전역 필터',
enableMonitor: '활성화',
storeDays: '만료일',
cleanMonitor: '모니터링 기록 정리',
enableMonitor: '모니터링 상태',
storeDays: '보관 일수',
defaultNetwork: '기본 네트워크 카드',
defaultNetworkHelper: '모니터링 및 개요 인터페이스에 표시되는 기본 네트워크 카드 옵션',
defaultIO: '기본 디스크',
defaultIOHelper: '모니터링 및 개요 인터페이스에 표시되는 기본 디스크 옵션',
cleanMonitor: '모니터링 기록 지우기',

avgLoad: '평균 부하',
loadDetail: '부하 세부사항',
Expand All @@ -1144,7 +1148,8 @@ const message = {
network: '네트워크',
up: '업',
down: '다운',
interval: '간격(분)',
interval: '수집 간격',
intervalHelper: '적절한 모니터링 수집 간격을 입력하세요 (5초 - 12시간)',

gpuUtil: 'GPU 사용률',
temperature: '온도',
Expand Down
14 changes: 10 additions & 4 deletions frontend/src/lang/modules/ms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1163,9 +1163,14 @@ const message = {
},
monitor: {
globalFilter: 'Penapis Global',
enableMonitor: 'Aktifkan',
storeDays: 'Hari luput',
cleanMonitor: 'Bersihkan rekod pemantauan',
enableMonitor: 'Status Pemantauan',
storeDays: 'Hari Penyimpanan',
defaultNetwork: 'Kad Rangkaian Lalai',
defaultNetworkHelper:
'Pilihan kad rangkaian lalai yang dipaparkan dalam antara muka pemantauan dan gambaran keseluruhan',
defaultIO: 'Cakera Lalai',
defaultIOHelper: 'Pilihan cakera lalai yang dipaparkan dalam antara muka pemantauan dan gambaran keseluruhan',
cleanMonitor: 'Kosongkan Rekod Pemantauan',

avgLoad: 'Purata beban',
loadDetail: 'Butiran beban',
Expand All @@ -1184,7 +1189,8 @@ const message = {
network: 'Rangkaian',
up: 'Naik',
down: 'Turun',
interval: 'Selang (minit)',
interval: 'Selang Kumpulan',
intervalHelper: 'Sila masukkan selang kumpulan pemantauan yang sesuai (5 saat - 12 jam)',

gpuUtil: 'Penggunaan GPU',
temperature: 'Suhu',
Expand Down
15 changes: 10 additions & 5 deletions frontend/src/lang/modules/pt-br.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1156,10 +1156,14 @@ const message = {
},
},
monitor: {
globalFilter: 'Filtro global',
enableMonitor: 'Ativar',
storeDays: 'Dias de expiração',
cleanMonitor: 'Limpar registros de monitoramento',
globalFilter: 'Filtro Global',
enableMonitor: 'Status de Monitoramento',
storeDays: 'Dias de Retenção',
defaultNetwork: 'Placa de Rede Padrão',
defaultNetworkHelper: 'Opção de placa de rede padrão exibida nas interfaces de monitoramento e visão geral',
defaultIO: 'Disco Padrão',
defaultIOHelper: 'Opção de disco padrão exibida nas interfaces de monitoramento e visão geral',
cleanMonitor: 'Limpar Registros de Monitoramento',

avgLoad: 'Média de carga',
loadDetail: 'Detalhes da carga',
Expand All @@ -1178,7 +1182,8 @@ const message = {
network: 'Rede',
up: 'Para cima',
down: 'Para baixo',
interval: 'Intervalo (minuto)',
interval: 'Intervalo de Coleta',
intervalHelper: 'Insira um intervalo de coleta de monitoramento apropriado (5 segundos - 12 horas)',

gpuUtil: 'Utilização da GPU',
temperature: 'Temperatura',
Expand Down
15 changes: 10 additions & 5 deletions frontend/src/lang/modules/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1160,10 +1160,14 @@ const message = {
},
},
monitor: {
globalFilter: 'Глобальный фильтр',
enableMonitor: 'Включить',
storeDays: 'Дни хранения',
cleanMonitor: 'Очистить записи мониторинга',
globalFilter: 'Глобальный Фильтр',
enableMonitor: 'Статус Мониторинга',
storeDays: 'Дни Хранения',
defaultNetwork: 'Сетевая Карта по Умолчанию',
defaultNetworkHelper: 'Опция сетевой карты по умолчанию, отображаемая в интерфейсах мониторинга и обзора',
defaultIO: 'Диск по Умолчанию',
defaultIOHelper: 'Опция диска по умолчанию, отображаемая в интерфейсах мониторинга и обзора',
cleanMonitor: 'Очистить Записи Мониторинга',

avgLoad: 'Средняя нагрузка',
loadDetail: 'Детали нагрузки',
Expand All @@ -1182,7 +1186,8 @@ const message = {
network: 'Сеть',
up: 'Исходящий',
down: 'Входящий',
interval: 'Интервал(минут)',
interval: 'Интервал Сбора',
intervalHelper: 'Пожалуйста, введите подходящий интервал сбора мониторинга (5 секунд - 12 часов)',

gpuUtil: 'Использование GPU',
temperature: 'Температура',
Expand Down
15 changes: 9 additions & 6 deletions frontend/src/lang/modules/tr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1182,11 +1182,13 @@ const message = {
},
monitor: {
globalFilter: 'Genel Filtre',
enableMonitor: 'Etkinleştir',
storeDays: 'Son kullanma günleri',
defaultNetwork: 'Varsayılan Ağ Adaptörü',
defaultNetworkHelper: 'Varsayılan izleme ve genel bakış arayüzünde görüntülenen ağ adaptörü seçeneği',
cleanMonitor: 'İzleme kayıtlarını temizle',
enableMonitor: 'İzleme Durumu',
storeDays: 'Saklama Günleri',
defaultNetwork: 'Varsayılan Ağ Kartı',
defaultNetworkHelper: 'İzleme ve genel bakış arayüzlerinde görüntülenen varsayılan ağ kartı seçeneği',
defaultIO: 'Varsayılan Disk',
defaultIOHelper: 'İzleme ve genel bakış arayüzlerinde görüntülenen varsayılan disk seçeneği',
cleanMonitor: 'İzleme Kayıtlarını Temizle',

avgLoad: 'Ortalama yük',
loadDetail: 'Yük detayı',
Expand All @@ -1207,7 +1209,8 @@ const message = {
network: 'Ağ',
up: 'Yukarı',
down: 'Aşağı',
interval: 'Aralık(dakika)',
interval: 'Toplama Aralığı',
intervalHelper: 'Lütfen uygun bir izleme toplama aralığı girin (5 saniye - 12 saat)',

gpuUtil: 'GPU Kullanımı',
temperature: 'Sıcaklık',
Expand Down
Loading
Loading