50 lines
740 B
Go
50 lines
740 B
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"strconv"
|
|
|
|
"github.com/shirou/gopsutil/v3/cpu"
|
|
)
|
|
|
|
var cpuCount = 0
|
|
|
|
func init() {
|
|
count, err := cpu.Counts(true)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
cpuInfo.NoVals = count + 1
|
|
cpuCount = count
|
|
cpuInfo.ValTags = make([]string, count+1)
|
|
cpuInfo.ValTags[0] = "Avg"
|
|
for i := range cpuInfo.ValTags[1:] {
|
|
cpuInfo.ValTags[1+i] = "#" + strconv.Itoa(i+1)
|
|
}
|
|
}
|
|
|
|
var cpuInfo = provider{
|
|
NoVals: cpuCount + 1,
|
|
|
|
Fetch: func() []float64 {
|
|
var fs = make([]float64, cpuCount+1)
|
|
|
|
cper, err := cpu.Percent(0, true)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return fs
|
|
}
|
|
|
|
var sum float64
|
|
for _, x := range cper {
|
|
sum += x
|
|
}
|
|
sum /= float64(len(cper))
|
|
|
|
fs[0] = sum
|
|
copy(fs[1:], cper)
|
|
|
|
return fs
|
|
},
|
|
}
|