type.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package analytic
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/analytic"
  4. "github.com/shirou/gopsutil/v3/cpu"
  5. "github.com/shirou/gopsutil/v3/host"
  6. "github.com/shirou/gopsutil/v3/load"
  7. "github.com/shirou/gopsutil/v3/net"
  8. )
  9. type CPUStat struct {
  10. User float64 `json:"user"`
  11. System float64 `json:"system"`
  12. Idle float64 `json:"idle"`
  13. Total float64 `json:"total"`
  14. }
  15. type Stat struct {
  16. Uptime uint64 `json:"uptime"`
  17. LoadAvg *load.AvgStat `json:"loadavg"`
  18. CPU CPUStat `json:"cpu"`
  19. Memory analytic.MemStat `json:"memory"`
  20. Disk analytic.DiskStat `json:"disk"`
  21. Network net.IOCountersStat `json:"network"`
  22. }
  23. type CPURecords struct {
  24. Info []cpu.InfoStat `json:"info"`
  25. User []analytic.Usage[float64] `json:"user"`
  26. Total []analytic.Usage[float64] `json:"total"`
  27. }
  28. type NetworkRecords struct {
  29. Init net.IOCountersStat `json:"init"`
  30. BytesRecv []analytic.Usage[uint64] `json:"bytesRecv"`
  31. BytesSent []analytic.Usage[uint64] `json:"bytesSent"`
  32. }
  33. type DiskIORecords struct {
  34. Writes []analytic.Usage[uint64] `json:"writes"`
  35. Reads []analytic.Usage[uint64] `json:"reads"`
  36. }
  37. type InitResp struct {
  38. Host *host.InfoStat `json:"host"`
  39. CPU CPURecords `json:"cpu"`
  40. Network NetworkRecords `json:"network"`
  41. DiskIO DiskIORecords `json:"disk_io"`
  42. Memory analytic.MemStat `json:"memory"`
  43. Disk analytic.DiskStat `json:"disk"`
  44. LoadAvg *load.AvgStat `json:"loadavg"`
  45. }