diff --git a/beszel/internal/agent/agent.go b/beszel/internal/agent/agent.go index 2fc8b46..d2b53ff 100644 --- a/beszel/internal/agent/agent.go +++ b/beszel/internal/agent/agent.go @@ -15,11 +15,6 @@ import ( ) type Agent struct { - hostname string // Hostname of the system - kernelVersion string // Kernel version of the system - cpuModel string // CPU model of the system - cores int // Number of cores of the system - threads int // Number of threads of the system debug bool // true if LOG_LEVEL is set to debug fsNames []string // List of filesystem device names being monitored fsStats map[string]*system.FsStats // Keeps track of disk stats for each filesystem @@ -31,6 +26,7 @@ type Agent struct { apiContainerList *[]container.ApiInfo // List of containers from docker host sensorsContext context.Context // Sensors context to override sys location sensorsWhitelist map[string]struct{} // List of sensors to monitor + systemInfo system.Info // Host system info } func NewAgent() *Agent { @@ -81,14 +77,15 @@ func (a *Agent) Run(pubKey []byte, addr string) { } func (a *Agent) gatherStats() system.CombinedData { - systemInfo, SystemStats := a.getSystemStats() systemData := system.CombinedData{ - Stats: SystemStats, - Info: systemInfo, + Stats: a.getSystemStats(), + Info: a.systemInfo, } // add docker stats if containerStats, err := a.getDockerStats(); err == nil { systemData.Containers = containerStats + } else { + slog.Debug("Error getting docker stats", "err", err) } // add extra filesystems systemData.Stats.ExtraFs = make(map[string]*system.FsStats) diff --git a/beszel/internal/agent/system.go b/beszel/internal/agent/system.go index ba23c09..f308314 100644 --- a/beszel/internal/agent/system.go +++ b/beszel/internal/agent/system.go @@ -18,26 +18,28 @@ import ( // Sets initial / non-changing values about the host system func (a *Agent) initializeSystemInfo() { - a.kernelVersion, _ = host.KernelVersion() - a.hostname, _ = os.Hostname() + a.systemInfo.AgentVersion = beszel.Version + a.systemInfo.Hostname, _ = os.Hostname() + a.systemInfo.KernelVersion, _ = host.KernelVersion() - // add cpu stats + // cpu model if info, err := cpu.Info(); err == nil && len(info) > 0 { - a.cpuModel = info[0].ModelName + a.systemInfo.CpuModel = info[0].ModelName } - a.cores, _ = cpu.Counts(false) + // cores / threads + a.systemInfo.Cores, _ = cpu.Counts(false) if threads, err := cpu.Counts(true); err == nil { - if threads > 0 && threads < a.cores { + if threads > 0 && threads < a.systemInfo.Cores { // in lxc logical cores reflects container limits, so use that as cores if lower - a.cores = threads + a.systemInfo.Cores = threads } else { - a.threads = threads + a.systemInfo.Threads = threads } } } // Returns current info, stats about the host system -func (a *Agent) getSystemStats() (system.Info, system.Stats) { +func (a *Agent) getSystemStats() system.Stats { systemStats := system.Stats{} // cpu percent @@ -173,19 +175,11 @@ func (a *Agent) getSystemStats() (system.Info, system.Stats) { } } - systemInfo := system.Info{ - Cpu: systemStats.Cpu, - MemPct: systemStats.MemPct, - DiskPct: systemStats.DiskPct, - AgentVersion: beszel.Version, - Hostname: a.hostname, - KernelVersion: a.kernelVersion, - CpuModel: a.cpuModel, - Cores: a.cores, - Threads: a.threads, - } + // update base system info + a.systemInfo.Cpu = systemStats.Cpu + a.systemInfo.MemPct = systemStats.MemPct + a.systemInfo.DiskPct = systemStats.DiskPct + a.systemInfo.Uptime, _ = host.Uptime() - systemInfo.Uptime, _ = host.Uptime() - - return systemInfo, systemStats + return systemStats } diff --git a/beszel/internal/entities/system/system.go b/beszel/internal/entities/system/system.go index 5fde3d7..6ffa39e 100644 --- a/beszel/internal/entities/system/system.go +++ b/beszel/internal/entities/system/system.go @@ -44,17 +44,16 @@ type NetIoStats struct { } type Info struct { - Hostname string `json:"h"` - KernelVersion string `json:"k,omitempty"` - Cores int `json:"c"` - Threads int `json:"t,omitempty"` - CpuModel string `json:"m"` - // Os string `json:"o"` - Uptime uint64 `json:"u"` - Cpu float64 `json:"cpu"` - MemPct float64 `json:"mp"` - DiskPct float64 `json:"dp"` - AgentVersion string `json:"v"` + Hostname string `json:"h"` + KernelVersion string `json:"k,omitempty"` + Cores int `json:"c"` + Threads int `json:"t,omitempty"` + CpuModel string `json:"m"` + Uptime uint64 `json:"u"` + Cpu float64 `json:"cpu"` + MemPct float64 `json:"mp"` + DiskPct float64 `json:"dp"` + AgentVersion string `json:"v"` } // Final data structure to return to the hub