#pragma once #include #include #include "metrics/Host.h" namespace metrics { class Collector { public: Collector(const std::vector> &disks = {{"R", "/"}}); explicit Collector(); Host collect(); private: struct CpuTimes { uint64_t user = 0, nice = 0, system = 0, idle = 0, iowait = 0, irq = 0, softirq = 0, steal = 0; }; std::pair> prevCpu; std::vector logicalToPhysical; std::pair> readCpuTimes(); const std::vector> disks; float cpuLoad(const CpuTimes &prev, const CpuTimes &cur); std::vector readCpuCoreTemps(); Memory readMemory(); Disk readDisk(const std::vector &disk = {"R", "/"}); void readLoad(float &l1, float &l5, float &l15); uint64_t readUptime(); std::string readHostname(); }; } // namespace metrics