func (p ubuntu) GetDiskStats(mountedPath string) (stats DiskStats, err error) { fsUsage := sigar.FileSystemUsage{} err = fsUsage.Get(mountedPath) if err != nil { return } stats.Total = fsUsage.Total stats.Used = fsUsage.Used stats.InodeTotal = fsUsage.Files stats.InodeUsed = fsUsage.Files - fsUsage.FreeFiles return }
func (s sigarStatsCollector) GetDiskStats(mountedPath string) (stats DiskStats, err error) { fsUsage := sigar.FileSystemUsage{} err = fsUsage.Get(mountedPath) if err != nil { err = bosherr.WrapError(err, "Getting Sigar File System Usage") return } stats.Total = fsUsage.Total stats.Used = fsUsage.Used stats.InodeTotal = fsUsage.Files stats.InodeUsed = fsUsage.Files - fsUsage.FreeFiles return }
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 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 freeDisk() uint64 { disk := sigar.FileSystemUsage{} workingDirectory, _ := os.Getwd() disk.Get(workingDirectory) return (disk.Avail / 1024) }
import ( "os" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" sigar "github.com/cloudfoundry/gosigar" ) var _ = Describe("SigarWindows", func() { Describe("Memory", func() { It("gets the total memory", func() { mem := sigar.Mem{} err := mem.Get() Ω(err).ShouldNot(HaveOccurred()) Ω(mem.Total).Should(BeNumerically(">", 0)) }) }) Describe("Disk", func() { It("gets the total disk space", func() { usage := sigar.FileSystemUsage{} err := usage.Get(os.TempDir()) Ω(err).ShouldNot(HaveOccurred()) Ω(usage.Total).Should(BeNumerically(">", 0)) }) }) })