ssh_crawler/stat/cpu.go

136 lines
2.9 KiB
Go
Raw Normal View History

2017-10-20 06:10:30 +00:00
package stat
import (
"bufio"
2017-10-23 09:08:19 +00:00
"io"
2017-10-20 06:10:30 +00:00
"strings"
2017-11-09 09:04:07 +00:00
)
//
2017-10-20 06:10:30 +00:00
type CPUStat struct {
2017-11-09 09:04:07 +00:00
//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
2017-10-20 06:10:30 +00:00
}
2017-11-09 09:04:07 +00:00
//func (cpu CPUStat) Command() string {
// return "cat /proc/stat"
//}
2017-10-20 06:10:30 +00:00
2017-11-09 09:04:07 +00:00
func (cpu CPUStat) Read(r io.Reader) (map[string]string, error) {
2017-10-20 06:10:30 +00:00
var (
2017-11-09 09:04:07 +00:00
//stats = []CPUStat{}
2017-10-20 06:10:30 +00:00
scanner = bufio.NewScanner(r)
)
2017-11-09 09:04:07 +00:00
resMap := make(map[string]string)
2017-10-20 06:10:30 +00:00
for scanner.Scan() {
line := scanner.Text()
parts := strings.Fields(line)
if !strings.HasPrefix(parts[0], "cpu") {
continue
}
2017-11-09 09:04:07 +00:00
//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])
//}
2017-10-20 06:10:30 +00:00
2017-10-24 07:09:17 +00:00
2017-11-09 09:04:07 +00:00
//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
//})
2017-10-24 07:09:17 +00:00
2017-11-09 09:04:07 +00:00
//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]
2017-10-24 07:09:17 +00:00
2017-11-09 09:04:07 +00:00
break // first line only --- cpu
2017-10-24 07:09:17 +00:00
}
2017-11-09 09:04:07 +00:00
//res, err := cpu.parse(keys, stats)
//if err != nil {
// return nil, err
//}
2017-10-24 07:09:17 +00:00
2017-11-09 09:04:07 +00:00
return resMap, scanner.Err()
2017-10-20 06:10:30 +00:00
}
2017-11-09 09:04:07 +00:00
//
//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)
//}