feat(collectors) basic implementation of boring collectors; sender via http(s) to hard coded api route

This commit is contained in:
2026-01-18 19:21:16 +00:00
parent e64f597fab
commit db6ed003f1
12 changed files with 611 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
package aggregate
import "time"
type Window struct {
start time.Time
cpuSum float64
cpuCount uint64
memSum float64
memCount uint64
diskSum float64
diskCount uint64
uptime uint64
}
type Snapshot struct {
Timestamp time.Time
CPUAvg float64
MemAvg float64
DiskAvg float64
Uptime uint64
}
func NewWindow() *Window {
return &Window{
start: time.Now(),
}
}
func (w *Window) AddCPU(value float64) {
w.cpuSum += value
w.cpuCount++
}
func (w *Window) AddMemory(value float64) {
w.memSum += value
w.memCount++
}
func (w *Window) SetUptime(value uint64) {
w.uptime = value
}
func (w *Window) Ready(windowDuration time.Duration) bool {
return time.Since(w.start) >= windowDuration
}
func (w *Window) Snapshot() Snapshot {
var cpuAvg float64
if w.cpuCount > 0 {
cpuAvg = w.cpuSum / float64(w.cpuCount)
}
var memAvg float64
if w.memCount > 0 {
memAvg = w.memSum / float64(w.memCount)
}
var diskAvg float64
if w.diskCount > 0 {
diskAvg = w.diskSum / float64(w.diskCount)
}
return Snapshot{
Timestamp: time.Now(),
CPUAvg: cpuAvg,
MemAvg: memAvg,
DiskAvg: diskAvg,
Uptime: w.uptime,
}
}
func (w *Window) AddDisk(value float64) {
w.diskSum += value
w.diskCount++
}