ssh_crawler/stat/cpu.go
2017-11-09 18:04:07 +09:00

136 lines
2.9 KiB
Go

package stat
import (
"bufio"
"io"
"strings"
)
//
type CPUStat struct {
//Device,
//User,
//Nice,
//System,
//Idle,
//Iowait,
//Irq,
//SoftIrq,
//Steal, // (over 2.6.11)
//Guest, // (over 2.6.24)
//GuestNice, //(over 2.6.33)
//Sum int64
}
//func (cpu CPUStat) Command() string {
// return "cat /proc/stat"
//}
func (cpu CPUStat) Read(r io.Reader) (map[string]string, error) {
var (
//stats = []CPUStat{}
scanner = bufio.NewScanner(r)
)
resMap := make(map[string]string)
for scanner.Scan() {
line := scanner.Text()
parts := strings.Fields(line)
if !strings.HasPrefix(parts[0], "cpu") {
continue
}
//var steal, guest, guestNice int64
//if len(parts) > 8 {
// steal = util.StringToInt64(parts[8])
//}
//if len(parts) > 9 {
// guest = util.StringToInt64(parts[9])
//}
//if len(parts) > 10 {
// guestNice = util.StringToInt64(parts[10])
//}
//stats = append(stats, CPUStat{
//Device := util.StringToInt64(parts[0])
//User := util.StringToInt64(parts[1])
//Nice := util.StringToInt64(parts[2])
//System := util.StringToInt64(parts[3])
//Idle := util.StringToInt64(parts[4])
//Iowait := util.StringToInt64(parts[5])
//Irq := util.StringToInt64(parts[6])
//SoftIrq := util.StringToInt64(parts[7])
//Steal := steal
//Guest := guest
//GuestNice := guestNice
//})
//sum := User + Nice + System + Idle + Iowait + Irq + SoftIrq + Steal + Guest + GuestNice
//resMap["sum"] = strconv.FormatInt(sum, 10)
resMap["user"] = parts[1]
resMap["nice"] = parts[2]
resMap["system"] = parts[3]
//resMap["idle"] = parts[4]
resMap["iowait"] = parts[5]
resMap["irq"] = parts[6]
resMap["softIrq"] = parts[7]
resMap["steal"] = parts[8]
resMap["guest"] = parts[9]
resMap["gnice"] = parts[10]
break // first line only --- cpu
}
//res, err := cpu.parse(keys, stats)
//if err != nil {
// return nil, err
//}
return resMap, scanner.Err()
}
//
//func (cpu CPUStat) parse(keys []string, data []CPUStat) (map[string]string, error) {
// resMap := make(map[string]string)
//
// for _, key := range keys {
// resMap[key] = cpu.calc(key, data[0])
// }
//
// return resMap, nil
//}
//
//func (cpu CPUStat) calc(key string, d CPUStat) string {
// var value int64 = 0
// sum := d.User + d.Nice + d.System + d.Idle + d.Iowait + d.Irq + d.SoftIrq + d.Steal + d.Guest + d.GuestNice
// switch key {
// case "cpu.usage.sum":
// value = sum
// case "cpu.usage.user":
// value = d.User
// case "cpu.usage.nice":
// value = d.Nice
// case "cpu.usage.system":
// value = d.System
// case "cpu.usage.idle":
// value = d.Idle
// case "cpu.usage.iowait":
// value = d.Iowait
// case "cpu.usage.irq":
// value = d.Irq
// case "cpu.usage.softirq":
// value = d.SoftIrq
// case "cpu.usage.steal":
// value = d.Steal
// case "cpu.usage.guest":
// value = d.Guest
// case "cpu.usage.gnice":
// value = d.GuestNice
// default:
//
// }
// return strconv.FormatInt(value, 10)
//}