stub out pidusage calls for windows, and also check errors

This commit is contained in:
Dan Ballard 2021-11-08 16:34:36 -08:00
parent 7fbe110361
commit 52f7733a59
1 changed files with 33 additions and 14 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/struCoder/pidusage" "github.com/struCoder/pidusage"
"os" "os"
"path" "path"
"runtime"
"sync" "sync"
"time" "time"
) )
@ -31,8 +32,8 @@ type Monitors struct {
} }
// Start initializes a Monitors's monitors // Start initializes a Monitors's monitors
func (mp *Monitors) Start(ts tapir.Service, configDir string, log bool) { func (mp *Monitors) Start(ts tapir.Service, configDir string, doLogging bool) {
mp.log = log mp.log = doLogging
mp.configDir = configDir mp.configDir = configDir
mp.starttime = time.Now() mp.starttime = time.Now()
mp.breakChannel = make(chan bool) mp.breakChannel = make(chan bool)
@ -48,18 +49,36 @@ func (mp *Monitors) Start(ts tapir.Service, configDir string, log bool) {
}) })
var pidUsageLock sync.Mutex var pidUsageLock sync.Mutex
mp.CPU = NewMonitorHistory(Percent, Average, func() float64 { // pidusage doesn't support windows
pidUsageLock.Lock() if runtime.GOOS != "windows" {
defer pidUsageLock.Unlock() mp.CPU = NewMonitorHistory(Percent, Average, func() float64 {
sysInfo, _ := pidusage.GetStat(os.Getpid()) pidUsageLock.Lock()
return float64(sysInfo.CPU) defer pidUsageLock.Unlock()
}) sysInfo, err := pidusage.GetStat(os.Getpid())
mp.Memory = NewMonitorHistory(MegaBytes, Average, func() float64 { if err != nil {
pidUsageLock.Lock() log.Errorf("pidusage.GetStat failed with: %s", err)
defer pidUsageLock.Unlock() return 0.0
sysInfo, _ := pidusage.GetStat(os.Getpid()) }
return float64(sysInfo.Memory) return float64(sysInfo.CPU)
}) })
mp.Memory = NewMonitorHistory(MegaBytes, Average, func() float64 {
pidUsageLock.Lock()
defer pidUsageLock.Unlock()
sysInfo, err := pidusage.GetStat(os.Getpid())
if err != nil {
log.Errorf("pidusage.GetStat failed with: %s", err)
return 0.0
}
return float64(sysInfo.Memory)
})
} else {
mp.CPU = NewMonitorHistory(Percent, Average, func() float64 {
return 0.0
})
mp.Memory = NewMonitorHistory(MegaBytes, Average, func() float64 {
return 0.0
})
}
// TODO: replace with ts. // TODO: replace with ts.
mp.ClientConns = NewMonitorHistory(Count, Average, func() float64 { return float64(ts.Metrics().ConnectionCount) }) mp.ClientConns = NewMonitorHistory(Count, Average, func() float64 { return float64(ts.Metrics().ConnectionCount) })