func GetFileSystemList75() []string { result := []string{} volumes := []sigar.FileSystem{} if runtime.GOOS == "windows" { volumes = getWindowsDrives() } else { fslist := sigar.FileSystemList{} fslist.Get() volumes = fslist.List } for _, volume := range volumes { dirName := volume.DirName usage := sigar.FileSystemUsage{} usage.Get(dirName) if usage.UsePercent() >= 75 { result = append(result, fmt.Sprintf("%s (%s)", dirName, sigar.FormatPercent(usage.UsePercent()))) } } return result }
func postMetrics() error { var metrics = make(map[string]interface{}) // Runtime Info metrics["agent.runtime.numcpu"] = runtime.NumCPU() metrics["agent.runtime.numgoroutine"] = runtime.NumGoroutine() // System Info avg := sigar.LoadAverage{} mem := sigar.Mem{} swap := sigar.Swap{} avg.Get() mem.Get() swap.Get() metrics["agent.system.loadavg.one"] = avg.One metrics["agent.system.loadavg.five"] = avg.Five metrics["agent.system.loadavg.fifteen"] = avg.Fifteen metrics["agent.system.mem.total"] = mem.Total metrics["agent.system.mem.used"] = mem.Used metrics["agent.system.mem.free"] = mem.Free metrics["agent.system.mem.actual_used"] = mem.ActualUsed metrics["agent.system.mem.actual_free"] = mem.ActualFree metrics["agent.system.swap.total"] = swap.Total metrics["agent.system.swap.used"] = swap.Used metrics["agent.system.swap.free"] = swap.Free // Disk Info fslist := sigar.FileSystemList{} fslist.Get() for _, fs := range fslist.List { if strings.HasPrefix(fs.DevName, "/") { dirname := fs.DirName usage := sigar.FileSystemUsage{} usage.Get(dirname) metrics[fmt.Sprintf("agent.disk.%s.total", dirname)] = usage.Total metrics[fmt.Sprintf("agent.disk.%s.used", dirname)] = usage.Used metrics[fmt.Sprintf("agent.disk.%s.avail", dirname)] = usage.Avail metrics[fmt.Sprintf("agent.disk.%s.used_percent", dirname)] = usage.UsePercent() } } if client, err := models.NewCounterClient(nil); err != nil { return err } else { return client.PostMany("statsd", metrics) } }
func getFsUsage() (res map[string]*sigar.FileSystemUsage, err error) { fss := sigar.FileSystemList{} err = fss.Get() if err != nil { return } // init map firstly res = map[string]*sigar.FileSystemUsage{} for _, fs := range fss.List { fsu := &sigar.FileSystemUsage{} if !strings.HasPrefix(fs.DevName, "/dev") { continue } err = fsu.Get(fs.DirName) if err != nil { return } res[fs.DirName] = fsu } return }