package main import ( "log" "github.com/mackerelio/go-osstat/cpu" "github.com/mackerelio/go-osstat/disk" "github.com/mackerelio/go-osstat/loadavg" "github.com/mackerelio/go-osstat/memory" "github.com/mackerelio/go-osstat/network" ) func (m *Metric) getMemory() error { memory, err := memory.Get() if err != nil { log.Printf("Cannot get memory: %s\n", err) return err } m.MemMetrics.FreeMem = memory.Free m.MemMetrics.TotalMem = memory.Total m.MemMetrics.UsedMem = memory.Used m.MemMetrics.BuffersMem = memory.Buffers m.MemMetrics.CachedMem = memory.Cached m.MemMetrics.AvailableMem = memory.Available m.MemMetrics.ActiveMem = memory.Active m.MemMetrics.InactiveMem = memory.Inactive m.MemMetrics.SwapTotal = memory.SwapTotal m.MemMetrics.SwapUsed = memory.SwapUsed m.MemMetrics.SwapCached = memory.SwapCached m.MemMetrics.SwapFree = memory.SwapFree return nil } func (m *Metric) getLoadAvg() error { loadAvg, err := loadavg.Get() if err != nil { log.Printf("Cannot get loadAvg(): %s\n", err) return err } m.LoadMetrics.Load1m = loadAvg.Loadavg1 m.LoadMetrics.Load5m = loadAvg.Loadavg5 m.LoadMetrics.Load15m = loadAvg.Loadavg15 return nil } func (m *Metric) getCpuMetric() error { cpu, err := cpu.Get() if err != nil { log.Printf("Cannot get cpu(): %s\n", err) return err } m.CPUMetrics.User = cpu.User m.CPUMetrics.Nice = cpu.Nice m.CPUMetrics.System = cpu.System m.CPUMetrics.Idle = cpu.Idle m.CPUMetrics.Iowait = cpu.Iowait m.CPUMetrics.Irq = cpu.Irq m.CPUMetrics.Softirq = cpu.Softirq m.CPUMetrics.Steal = cpu.Steal m.CPUMetrics.Guest = cpu.Guest m.CPUMetrics.GuestNice = cpu.GuestNice m.CPUMetrics.Total = cpu.Total m.CPUMetrics.CPUCount = cpu.CPUCount m.CPUMetrics.StatCount = cpu.StatCount return nil } func (m *Metric) getDiskMetrics() error { disk, err := disk.Get() if err != nil { log.Printf("Cannot get disk(): %s\n", err) return err } for i, _ := range disk { tmpM := DiskMetric{ Name: disk[i].Name, WritesCompleted: disk[i].WritesCompleted, ReadsCompleted: disk[i].ReadsCompleted, } m.DiskMetrics = append(m.DiskMetrics, tmpM) } return nil } func (m *Metric) getNetworkMetrics() error { network, err := network.Get() if err != nil { log.Printf("Cannot get network(): %s\n", err) return err } for i, _ := range network { tmpM := NetworkMetric{ Name: network[i].Name, TxBytes: network[i].TxBytes, RxBytes: network[i].RxBytes, } m.NetworkMetrics = append(m.NetworkMetrics, tmpM) } return nil }