package models import ( "time" "gorm.io/gorm" ) // AgentReport Agent 上报的原始指标数据 // Logan.Li type AgentReport struct { ID uint `gorm:"primarykey" json:"id"` Hostname string `gorm:"size:255;index;not null" json:"hostname"` CPUUsage float64 `gorm:"type:decimal(6,2)" json:"cpu_usage"` // CPU 使用率 % CPUCores int `json:"cpu_cores"` // CPU 核心数 Load1 float64 `gorm:"type:decimal(8,2)" json:"load1"` // 1分钟负载 Load5 float64 `gorm:"type:decimal(8,2)" json:"load5"` // 5分钟负载 Load15 float64 `gorm:"type:decimal(8,2)" json:"load15"` // 15分钟负载 MemTotal float64 `gorm:"type:decimal(10,2)" json:"mem_total"` // 总内存 GB MemUsed float64 `gorm:"type:decimal(10,2)" json:"mem_used"` // 已用内存 GB MemUsage float64 `gorm:"type:decimal(6,2)" json:"mem_usage"` // 内存使用率 % DiskInfo string `gorm:"type:text" json:"disk_info"` // 磁盘信息 JSON PortInfo string `gorm:"type:text" json:"port_info"` // 端口信息 JSON ReportTime time.Time `json:"report_time"` // 上报时间 CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` } func (AgentReport) TableName() string { return "agent_reports" } // AgentReportRequest Agent 上报请求体 // Logan.Li type AgentReportRequest struct { Hostname string `json:"hostname"` Timestamp string `json:"timestamp"` CPU CPUMetric `json:"cpu"` Memory MemMetric `json:"memory"` Disks []DiskMetric `json:"disks"` Ports []PortMetric `json:"ports"` } type CPUMetric struct { UsagePercent float64 `json:"usage_percent"` CoreCount int `json:"core_count"` Load1 float64 `json:"load1"` Load5 float64 `json:"load5"` Load15 float64 `json:"load15"` } type MemMetric struct { TotalGB float64 `json:"total_gb"` UsedGB float64 `json:"used_gb"` CachedGB float64 `json:"cached_gb"` UsagePercent float64 `json:"usage_percent"` } type DiskMetric struct { Mount string `json:"mount"` Device string `json:"device"` TotalGB float64 `json:"total_gb"` UsedGB float64 `json:"used_gb"` UsagePercent float64 `json:"usage_percent"` } type PortMetric struct { Port int `json:"port"` Protocol string `json:"protocol"` Process string `json:"process"` PID int `json:"pid"` }