feat: collect and report 1-min load average

This commit is contained in:
2026-06-18 14:41:04 +01:00
parent 6756d19d93
commit b8ee27eec3
10 changed files with 139 additions and 4 deletions

View File

@@ -0,0 +1,41 @@
package loadavg
import (
"os"
"strconv"
"strings"
"bugs.watch/agent/internal/aggregate"
)
type Collector struct{}
func New() *Collector {
return &Collector{}
}
func (c *Collector) Name() string {
return "loadavg"
}
// Collect reads /proc/loadavg and stores the 1-minute load average.
// Failure is silently ignored by design.
func (c *Collector) Collect(window *aggregate.Window) {
data, err := os.ReadFile("/proc/loadavg")
if err != nil {
return
}
// Format: "<load1> <load5> <load15> <running/total> <last_pid>"
fields := strings.Fields(string(data))
if len(fields) < 1 {
return
}
load1, err := strconv.ParseFloat(fields[0], 64)
if err != nil {
return
}
window.SetLoad(load1)
}