package models type AgentMetrics struct { Hostname string `json:"hostname"` IP string `json:"ip"` Status string `json:"status"` Version string `json:"version"` CPUPercent *float64 `json:"cpu_percent"` MemoryUsed *int64 `json:"memory_used"` MemoryFree *int64 `json:"memory_free"` MemoryTotal *int64 `json:"memory_total"` HDDUsed *int64 `json:"hdd_used"` HDDFree *int64 `json:"hdd_free"` HDDTotal *int64 `json:"hdd_total"` Uptime *int64 `json:"uptime"` NetworkRX *int64 `json:"network_rx"` NetworkTX *int64 `json:"network_tx"` Temperature *float64 `json:"temperature"` Smart []SmartMetrics `json:"smart"` NetworkInfo []NetworkInterface `json:"network_info"` HardwareInfo *HardwareInfo `json:"hardware_info"` } type NetworkInterface struct { Name string `json:"name"` IfType string `json:"if_type"` SpeedMbps *int64 `json:"speed_mbps"` MAC string `json:"mac"` WoL *bool `json:"wol"` IperfMbps *float64 `json:"iperf_mbps"` } type HardwareInfo struct { MotherboardVendor *string `json:"motherboard_vendor"` MotherboardModel *string `json:"motherboard_model"` CPUModel *string `json:"cpu_model"` RAMType *string `json:"ram_type"` RAMSpeedMHz *int64 `json:"ram_speed_mhz"` RAMSlotsUsed *int64 `json:"ram_slots_used"` RAMSlotsTotal *int64 `json:"ram_slots_total"` } type SmartMetrics struct { Device string `json:"device"` Passed bool `json:"passed"` Temperature *int64 `json:"temperature"` ReallocatedSectors *int64 `json:"reallocated_sectors"` PowerOnHours *int64 `json:"power_on_hours"` WearLevel *int64 `json:"wear_level"` } type Agent struct { ID string `json:"id"` Hostname string `json:"hostname"` IP string `json:"ip"` Status string `json:"status"` LastSeen int64 `json:"last_seen"` Version string `json:"version,omitempty"` LastMetrics *AgentMetrics `json:"last_metrics,omitempty"` NetworkInfo []NetworkInterface `json:"network_info,omitempty"` HardwareInfo *HardwareInfo `json:"hardware_info,omitempty"` } type AgentConfig struct { Metrics MetricsConfig `json:"metrics"` Protocols ProtocolsConfig `json:"protocols"` } type ProtocolsConfig struct { UDP UDPConfig `json:"udp"` MQTT MQTTConfig `json:"mqtt"` } type UDPConfig struct { Enabled bool `json:"enabled"` } type MQTTConfig struct { Enabled bool `json:"enabled"` Host string `json:"host"` Port int `json:"port"` TopicBase string `json:"topic_base"` AutoDiscovery bool `json:"auto_discovery"` BirthMessage bool `json:"birth_message"` LastWill bool `json:"last_will"` } type MetricsConfig struct { CPU MetricProto `json:"cpu"` Memory MetricProto `json:"memory"` Disk MetricProto `json:"disk"` Network MetricProto `json:"network"` Uptime MetricProto `json:"uptime"` Temperature MetricProto `json:"temperature"` Smart MetricProto `json:"smart"` } type MetricProto struct { UDP bool `json:"udp"` MQTT bool `json:"mqtt"` } type ServerConfig struct { TileMinWidth int `json:"tile_min_width"` FontSize int `json:"font_size"` WarnCPU int `json:"warn_cpu"` ErrCPU int `json:"err_cpu"` WarnDisk int `json:"warn_disk"` RetentionDays int `json:"retention_days"` ChartDurationMin int `json:"chart_duration_min"` HideOffline bool `json:"hide_offline"` Notifications bool `json:"notifications"` PopupDetailW int `json:"popup_detail_w"` PopupDetailH int `json:"popup_detail_h"` GaugeType string `json:"gauge_type"` } func DefaultAgentConfig() *AgentConfig { on := MetricProto{UDP: true, MQTT: false} return &AgentConfig{ Protocols: ProtocolsConfig{UDP: UDPConfig{Enabled: true}}, Metrics: MetricsConfig{ CPU: on, Memory: on, Disk: on, Smart: on, Uptime: on, }, } } func DefaultServerConfig() ServerConfig { return ServerConfig{ TileMinWidth: 220, FontSize: 13, WarnCPU: 70, ErrCPU: 85, WarnDisk: 75, RetentionDays: 30, ChartDurationMin: 30, HideOffline: false, Notifications: true, PopupDetailW: 560, PopupDetailH: 600, GaugeType: "compact", } } type WSMessage struct { Type string `json:"type"` AgentID string `json:"agent_id"` Data interface{} `json:"data"` } type ServerStats struct { CPUPercent float64 `json:"cpu_percent"` MemUsed int64 `json:"mem_used"` MemTotal int64 `json:"mem_total"` Version string `json:"version"` }