add peak values for cpu and net

This commit is contained in:
Henry Dollman
2024-10-07 19:20:53 -04:00
parent 7a82571921
commit d672017af0
3 changed files with 53 additions and 32 deletions

View File

@@ -6,23 +6,26 @@ import (
) )
type Stats struct { type Stats struct {
Cpu float64 `json:"cpu"` Cpu float64 `json:"cpu"`
Mem float64 `json:"m"` PeakCpu float64 `json:"pcpu,omitempty"`
MemUsed float64 `json:"mu"` Mem float64 `json:"m"`
MemPct float64 `json:"mp"` MemUsed float64 `json:"mu"`
MemBuffCache float64 `json:"mb"` MemPct float64 `json:"mp"`
MemZfsArc float64 `json:"mz,omitempty"` // ZFS ARC memory MemBuffCache float64 `json:"mb"`
Swap float64 `json:"s,omitempty"` MemZfsArc float64 `json:"mz,omitempty"` // ZFS ARC memory
SwapUsed float64 `json:"su,omitempty"` Swap float64 `json:"s,omitempty"`
DiskTotal float64 `json:"d"` SwapUsed float64 `json:"su,omitempty"`
DiskUsed float64 `json:"du"` DiskTotal float64 `json:"d"`
DiskPct float64 `json:"dp"` DiskUsed float64 `json:"du"`
DiskReadPs float64 `json:"dr"` DiskPct float64 `json:"dp"`
DiskWritePs float64 `json:"dw"` DiskReadPs float64 `json:"dr"`
NetworkSent float64 `json:"ns"` DiskWritePs float64 `json:"dw"`
NetworkRecv float64 `json:"nr"` NetworkSent float64 `json:"ns"`
Temperatures map[string]float64 `json:"t,omitempty"` PeakNetworkSent float64 `json:"pns,omitempty"`
ExtraFs map[string]*FsStats `json:"efs,omitempty"` NetworkRecv float64 `json:"nr"`
PeakNetworkRecv float64 `json:"pnr,omitempty"`
Temperatures map[string]float64 `json:"t,omitempty"`
ExtraFs map[string]*FsStats `json:"efs,omitempty"`
} }
type FsStats struct { type FsStats struct {

View File

@@ -153,6 +153,11 @@ func (rm *RecordManager) AverageSystemStats(records []*models.Record) system.Sta
// use different counter for temps in case some records don't have them // use different counter for temps in case some records don't have them
tempCount := float64(0) tempCount := float64(0)
// peak values
peakCpu := float64(0)
peakNs := float64(0)
peakNr := float64(0)
var stats system.Stats var stats system.Stats
for _, record := range records { for _, record := range records {
record.UnmarshalJSONField("stats", &stats) record.UnmarshalJSONField("stats", &stats)
@@ -171,6 +176,10 @@ func (rm *RecordManager) AverageSystemStats(records []*models.Record) system.Sta
sum.DiskWritePs += stats.DiskWritePs sum.DiskWritePs += stats.DiskWritePs
sum.NetworkSent += stats.NetworkSent sum.NetworkSent += stats.NetworkSent
sum.NetworkRecv += stats.NetworkRecv sum.NetworkRecv += stats.NetworkRecv
// set peak values
peakCpu = max(peakCpu, stats.PeakCpu, stats.Cpu)
peakNs = max(peakNs, stats.PeakNetworkSent, stats.NetworkSent)
peakNr = max(peakNr, stats.PeakNetworkRecv, stats.NetworkRecv)
// add temps to sum // add temps to sum
if stats.Temperatures != nil { if stats.Temperatures != nil {
tempCount++ tempCount++
@@ -196,21 +205,24 @@ func (rm *RecordManager) AverageSystemStats(records []*models.Record) system.Sta
} }
stats = system.Stats{ stats = system.Stats{
Cpu: twoDecimals(sum.Cpu / count), Cpu: twoDecimals(sum.Cpu / count),
Mem: twoDecimals(sum.Mem / count), PeakCpu: twoDecimals(peakCpu),
MemUsed: twoDecimals(sum.MemUsed / count), Mem: twoDecimals(sum.Mem / count),
MemPct: twoDecimals(sum.MemPct / count), MemUsed: twoDecimals(sum.MemUsed / count),
MemBuffCache: twoDecimals(sum.MemBuffCache / count), MemPct: twoDecimals(sum.MemPct / count),
MemZfsArc: twoDecimals(sum.MemZfsArc / count), MemBuffCache: twoDecimals(sum.MemBuffCache / count),
Swap: twoDecimals(sum.Swap / count), MemZfsArc: twoDecimals(sum.MemZfsArc / count),
SwapUsed: twoDecimals(sum.SwapUsed / count), Swap: twoDecimals(sum.Swap / count),
DiskTotal: twoDecimals(sum.DiskTotal / count), SwapUsed: twoDecimals(sum.SwapUsed / count),
DiskUsed: twoDecimals(sum.DiskUsed / count), DiskTotal: twoDecimals(sum.DiskTotal / count),
DiskPct: twoDecimals(sum.DiskPct / count), DiskUsed: twoDecimals(sum.DiskUsed / count),
DiskReadPs: twoDecimals(sum.DiskReadPs / count), DiskPct: twoDecimals(sum.DiskPct / count),
DiskWritePs: twoDecimals(sum.DiskWritePs / count), DiskReadPs: twoDecimals(sum.DiskReadPs / count),
NetworkSent: twoDecimals(sum.NetworkSent / count), DiskWritePs: twoDecimals(sum.DiskWritePs / count),
NetworkRecv: twoDecimals(sum.NetworkRecv / count), NetworkSent: twoDecimals(sum.NetworkSent / count),
PeakNetworkSent: twoDecimals(peakNs),
NetworkRecv: twoDecimals(sum.NetworkRecv / count),
PeakNetworkRecv: twoDecimals(peakNr),
} }
if len(sum.Temperatures) != 0 { if len(sum.Temperatures) != 0 {

View File

@@ -35,6 +35,8 @@ export interface SystemInfo {
export interface SystemStats { export interface SystemStats {
/** cpu percent */ /** cpu percent */
cpu: number cpu: number
/** peak cpu */
pcpu?: number
/** total memory (gb) */ /** total memory (gb) */
m: number m: number
/** memory used (gb) */ /** memory used (gb) */
@@ -61,8 +63,12 @@ export interface SystemStats {
dw: number dw: number
/** network sent (mb) */ /** network sent (mb) */
ns: number ns: number
/** peak network sent (mb) */
pns?: number
/** network received (mb) */ /** network received (mb) */
nr: number nr: number
/** peak network received (mb) */
pnr?: number
/** temperatures */ /** temperatures */
t?: Record<string, number> t?: Record<string, number>
/** extra filesystems */ /** extra filesystems */