system_monitor.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * system_monitor.h - 系统资源监控(CPU/内存/温度/磁盘)
  3. * fix24 v24: Web管理功能批次
  4. */
  5. #ifndef SYSTEM_MONITOR_H
  6. #define SYSTEM_MONITOR_H
  7. #include <string>
  8. #include <vector>
  9. struct SystemStatus {
  10. // CPU
  11. double cpu_usage_percent; // CPU 使用率 (%)
  12. int cpu_core_count; // CPU 核心数
  13. std::vector<double> cpu_per_core; // 每核使用率
  14. double cpu_load_1min; // 1分钟负载
  15. double cpu_load_5min; // 5分钟负载
  16. double cpu_load_15min; // 15分钟负载
  17. // 内存
  18. long mem_total_mb; // 总内存 (MB)
  19. long mem_used_mb; // 已用内存 (MB)
  20. long mem_available_mb; // 可用内存 (MB)
  21. double mem_usage_percent; // 内存使用率 (%)
  22. // 温度
  23. double cpu_temp; // CPU 温度 (°C)
  24. bool temp_available; // 温度传感器是否可用
  25. // 磁盘
  26. long disk_total_gb; // 磁盘总容量 (GB)
  27. long disk_used_gb; // 已用 (GB)
  28. long disk_available_gb; // 可用 (GB)
  29. double disk_usage_percent; // 磁盘使用率 (%)
  30. // 系统信息
  31. std::string hostname;
  32. std::string kernel_version;
  33. std::string uptime_string;
  34. long uptime_seconds;
  35. // 进程信息
  36. int plate_rec_pid;
  37. long plate_rec_rss_mb; // PlateRecApp 内存占用 (MB)
  38. double plate_rec_cpu_percent; // PlateRecApp CPU 占用 (%)
  39. };
  40. namespace sysmon {
  41. // 获取系统状态快照
  42. SystemStatus get_system_status();
  43. // 获取 CPU 使用率(两次采样差值计算)
  44. double get_cpu_usage(int sample_ms = 200);
  45. // 获取 CPU 温度(从 /sys/class/thermal)
  46. double get_cpu_temperature();
  47. // 获取内存信息(从 /proc/meminfo)
  48. void get_memory_info(long &total_mb, long &used_mb, long &avail_mb, double &percent);
  49. // 获取磁盘信息
  50. void get_disk_info(const std::string &path, long &total_gb, long &used_gb, long &avail_gb, double &percent);
  51. // 获取系统启动时间
  52. std::string get_uptime_str(long &seconds);
  53. // 获取负载均值
  54. void get_load_avg(double &load1, double &load5, double &load15);
  55. // 获取当前进程资源占用
  56. void get_process_resource(int pid, long &rss_mb, double &cpu_percent);
  57. // 格式化文件大小
  58. std::string format_size(long mb);
  59. } // namespace sysmon
  60. #endif // SYSTEM_MONITOR_H