func GetLoad1() float64 { concreteSigar := sigar.ConcreteSigar{} avg, err := concreteSigar.GetLoadAverage() if err != nil { log.Debug("Failed to get load average") return -1 } return avg.One }
func GetSystemLoad() (*SystemLoad, error) { concreteSigar := sigar.ConcreteSigar{} avg, err := concreteSigar.GetLoadAverage() if err != nil { return nil, err } return &SystemLoad{ Load1: avg.One, Load5: avg.Five, Load15: avg.Fifteen, }, nil }
func main() { concreteSigar := gosigar.ConcreteSigar{} uptime := gosigar.Uptime{} uptime.Get() avg, err := concreteSigar.GetLoadAverage() if err != nil { fmt.Printf("Failed to get load average") return } fmt.Fprintf(os.Stdout, " %s up %s load average: %.2f, %.2f, %.2f\n", time.Now().Format("15:04:05"), uptime.Format(), avg.One, avg.Five, avg.Fifteen) }
func GetSystemLoad() (*SystemLoad, error) { concreteSigar := sigar.ConcreteSigar{} avg, err := concreteSigar.GetLoadAverage() if err != nil { return nil, err } cpuList := sigar.CpuList{} cpuList.Get() numCore := len(cpuList.List) return &SystemLoad{ Load1: avg.One, Load5: avg.Five, Load15: avg.Fifteen, LoadNorm1: avg.One / float64(numCore), LoadNorm5: avg.Five / float64(numCore), LoadNorm15: avg.Fifteen / float64(numCore), }, nil }
package sigar_test import ( "time" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" sigar "github.com/elastic/gosigar" ) var _ = Describe("ConcreteSigar", func() { var concreteSigar *sigar.ConcreteSigar BeforeEach(func() { concreteSigar = &sigar.ConcreteSigar{} }) Describe("CollectCpuStats", func() { It("immediately makes first CPU usage available even though it's not very accurate", func() { samplesCh, stop := concreteSigar.CollectCpuStats(500 * time.Millisecond) firstValue := <-samplesCh Expect(firstValue.User).To(BeNumerically(">", 0)) stop <- struct{}{} }) It("makes CPU usage delta values available", func() { samplesCh, stop := concreteSigar.CollectCpuStats(500 * time.Millisecond)