You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.5 KiB
Go

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
}