hardware.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package metrics
  2. import (
  3. "time"
  4. "github.com/shirou/gopsutil/cpu"
  5. "github.com/shirou/gopsutil/disk"
  6. "github.com/shirou/gopsutil/mem"
  7. log "github.com/sirupsen/logrus"
  8. )
  9. // Max number of metrics we want to keep.
  10. const maxCollectionValues = 500
  11. func collectCPUUtilization() {
  12. if len(Metrics.CPUUtilizations) > maxCollectionValues {
  13. Metrics.CPUUtilizations = Metrics.CPUUtilizations[1:]
  14. }
  15. v, err := cpu.Percent(0, false)
  16. if err != nil {
  17. log.Errorln(err)
  18. return
  19. }
  20. metricValue := timestampedValue{time.Now(), int(v[0])}
  21. Metrics.CPUUtilizations = append(Metrics.CPUUtilizations, metricValue)
  22. }
  23. func collectRAMUtilization() {
  24. if len(Metrics.RAMUtilizations) > maxCollectionValues {
  25. Metrics.RAMUtilizations = Metrics.RAMUtilizations[1:]
  26. }
  27. memoryUsage, _ := mem.VirtualMemory()
  28. metricValue := timestampedValue{time.Now(), int(memoryUsage.UsedPercent)}
  29. Metrics.RAMUtilizations = append(Metrics.RAMUtilizations, metricValue)
  30. }
  31. func collectDiskUtilization() {
  32. path := "./"
  33. diskUse, _ := disk.Usage(path)
  34. if len(Metrics.DiskUtilizations) > maxCollectionValues {
  35. Metrics.DiskUtilizations = Metrics.DiskUtilizations[1:]
  36. }
  37. metricValue := timestampedValue{time.Now(), int(diskUse.UsedPercent)}
  38. Metrics.DiskUtilizations = append(Metrics.DiskUtilizations, metricValue)
  39. }