38 lines
1.1 KiB
C++
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
|