Files
esDashboard/src/metrics/Collector.h
T
2025-12-29 16:44:22 +00:00

38 lines
1.1 KiB
C++

#pragma once
#include <vector>
#include <string>
#include "metrics/Host.h"
namespace metrics
{
class Collector
{
public:
Collector(const std::vector<std::vector<std::string>> &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<CpuTimes, std::vector<CpuTimes>> prevCpu;
std::vector<int> logicalToPhysical;
std::pair<CpuTimes, std::vector<CpuTimes>> readCpuTimes();
const std::vector<std::vector<std::string>> disks;
float cpuLoad(const CpuTimes &prev, const CpuTimes &cur);
std::vector<float> readCpuCoreTemps();
Memory readMemory();
Disk readDisk(const std::vector<std::string> &disk = {"R", "/"});
void readLoad(float &l1, float &l5, float &l15);
uint64_t readUptime();
std::string readHostname();
};
} // namespace metrics