mirror of
https://github.com/fankes/beszel.git
synced 2025-10-20 10:19:27 +08:00
add peak values for cpu and net
This commit is contained in:
@@ -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 {
|
||||||
|
@@ -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 {
|
||||||
|
6
beszel/site/src/types.d.ts
vendored
6
beszel/site/src/types.d.ts
vendored
@@ -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 */
|
||||||
|
Reference in New Issue
Block a user