mirror of
https://github.com/fankes/beszel.git
synced 2025-10-20 02:09:28 +08:00
Fetch kernel, hostname, cpu at start rather than every run
This commit is contained in:
@@ -27,8 +27,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Agent struct {
|
type Agent struct {
|
||||||
addr string // Adress that the ssh server listens on
|
addr string // Adress that the ssh server listens on
|
||||||
pubKey []byte // Public key for ssh server
|
pubKey []byte
|
||||||
|
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
|
||||||
sem chan struct{} // Semaphore to limit concurrent access to docker api
|
sem chan struct{} // Semaphore to limit concurrent access to docker api
|
||||||
debug bool // true if LOG_LEVEL is set to debug
|
debug bool // true if LOG_LEVEL is set to debug
|
||||||
fsNames []string // List of filesystem device names being monitored
|
fsNames []string // List of filesystem device names being monitored
|
||||||
@@ -183,35 +188,18 @@ func (a *Agent) getSystemStats() (system.Info, system.Stats) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
systemInfo := system.Info{
|
systemInfo := system.Info{
|
||||||
Cpu: systemStats.Cpu,
|
Cpu: systemStats.Cpu,
|
||||||
MemPct: systemStats.MemPct,
|
MemPct: systemStats.MemPct,
|
||||||
DiskPct: systemStats.DiskPct,
|
DiskPct: systemStats.DiskPct,
|
||||||
AgentVersion: beszel.Version,
|
AgentVersion: beszel.Version,
|
||||||
|
Hostname: a.hostname,
|
||||||
|
KernelVersion: a.kernelVersion,
|
||||||
|
CpuModel: a.cpuModel,
|
||||||
|
Cores: a.cores,
|
||||||
|
Threads: a.threads,
|
||||||
}
|
}
|
||||||
|
|
||||||
// add host info
|
systemInfo.Uptime, _ = host.Uptime()
|
||||||
if info, err := host.Info(); err == nil {
|
|
||||||
// slog.Debug("Virtualization", "system", info.VirtualizationSystem, "role", info.VirtualizationRole)
|
|
||||||
systemInfo.Uptime = info.Uptime
|
|
||||||
systemInfo.Hostname = info.Hostname
|
|
||||||
systemInfo.KernelVersion = info.KernelVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
// add cpu stats
|
|
||||||
if info, err := cpu.Info(); err == nil && len(info) > 0 {
|
|
||||||
systemInfo.CpuModel = info[0].ModelName
|
|
||||||
}
|
|
||||||
if cores, err := cpu.Counts(false); err == nil {
|
|
||||||
systemInfo.Cores = cores
|
|
||||||
}
|
|
||||||
if threads, err := cpu.Counts(true); err == nil {
|
|
||||||
if threads > 0 && threads < systemInfo.Cores {
|
|
||||||
// in lxc logical cores reflects container limits, so use that as cores if lower
|
|
||||||
systemInfo.Cores = threads
|
|
||||||
} else {
|
|
||||||
systemInfo.Threads = threads
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return systemInfo, systemStats
|
return systemInfo, systemStats
|
||||||
}
|
}
|
||||||
@@ -397,8 +385,29 @@ func (a *Agent) Run() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.initializeHostInfo()
|
||||||
a.initializeDiskInfo()
|
a.initializeDiskInfo()
|
||||||
a.initializeNetIoStats()
|
a.initializeNetIoStats()
|
||||||
|
|
||||||
a.startServer()
|
a.startServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sets initial / non-changing values about the host
|
||||||
|
func (a *Agent) initializeHostInfo() {
|
||||||
|
a.kernelVersion, _ = host.KernelVersion()
|
||||||
|
a.hostname, _ = os.Hostname()
|
||||||
|
|
||||||
|
// add cpu stats
|
||||||
|
if info, err := cpu.Info(); err == nil && len(info) > 0 {
|
||||||
|
a.cpuModel = info[0].ModelName
|
||||||
|
}
|
||||||
|
a.cores, _ = cpu.Counts(false)
|
||||||
|
if threads, err := cpu.Counts(true); err == nil {
|
||||||
|
if threads > 0 && threads < a.cores {
|
||||||
|
// in lxc logical cores reflects container limits, so use that as cores if lower
|
||||||
|
a.cores = threads
|
||||||
|
} else {
|
||||||
|
a.threads = threads
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user