52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
#pragma once
|
|
#include "spore/Service.h"
|
|
#include "spore/util/CpuUsage.h"
|
|
#include <functional>
|
|
|
|
class MonitoringService : public Service {
|
|
public:
|
|
MonitoringService(CpuUsage& cpuUsage);
|
|
void registerEndpoints(ApiServer& api) override;
|
|
void registerTasks(TaskManager& taskManager) override;
|
|
const char* getName() const override { return "Monitoring"; }
|
|
|
|
// System resource information
|
|
struct SystemResources {
|
|
// CPU information
|
|
float currentCpuUsage;
|
|
float averageCpuUsage;
|
|
float maxCpuUsage;
|
|
float minCpuUsage;
|
|
unsigned long measurementCount;
|
|
bool isMeasuring;
|
|
|
|
// Memory information
|
|
size_t freeHeap;
|
|
size_t totalHeap;
|
|
size_t minFreeHeap;
|
|
size_t maxAllocHeap;
|
|
size_t heapFragmentation;
|
|
|
|
// Filesystem information
|
|
size_t totalBytes;
|
|
size_t usedBytes;
|
|
size_t freeBytes;
|
|
float usagePercent;
|
|
|
|
// System uptime
|
|
unsigned long uptimeMs;
|
|
unsigned long uptimeSeconds;
|
|
};
|
|
|
|
// Get current system resources
|
|
SystemResources getSystemResources() const;
|
|
|
|
private:
|
|
void handleResourcesRequest(AsyncWebServerRequest* request);
|
|
|
|
// Helper methods
|
|
size_t calculateHeapFragmentation() const;
|
|
void getFilesystemInfo(size_t& totalBytes, size_t& usedBytes) const;
|
|
|
|
CpuUsage& cpuUsage;
|
|
}; |