2.3 KiB
2.3 KiB
Monitoring Service
Exposes system resource metrics via HTTP for observability.
Overview
- Service name:
MonitoringService - Endpoint:
GET /api/monitoring/resources - Metrics: CPU usage, memory, filesystem, uptime
Endpoint
GET /api/monitoring/resources
Returns real-time system resource metrics.
Response fields:
cpu.current_usage: Current CPU usage percentcpu.average_usage: Average CPU usage percentcpu.max_usage: Max observed CPU usagecpu.min_usage: Min observed CPU usagecpu.measurement_count: Number of measurementscpu.is_measuring: Whether measurement is activememory.free_heap: Free heap bytesmemory.total_heap: Total heap bytes (approximate)memory.min_free_heap: Minimum free heap (0 on ESP8266)memory.max_alloc_heap: Max allocatable heap (0 on ESP8266)memory.heap_fragmentation: Fragmentation percent (0 on ESP8266)filesystem.total_bytes: LittleFS total bytesfilesystem.used_bytes: Used bytesfilesystem.free_bytes: Free bytesfilesystem.usage_percent: Usage percentsystem.uptime_ms: Uptime in millisecondssystem.uptime_seconds: Uptime in secondssystem.uptime_formatted: Human-readable uptime
Example:
{
"cpu": {
"current_usage": 3.5,
"average_usage": 2.1,
"max_usage": 15.2,
"min_usage": 0.0,
"measurement_count": 120,
"is_measuring": true
},
"memory": {
"free_heap": 48748,
"total_heap": 81920,
"min_free_heap": 0,
"max_alloc_heap": 0,
"heap_fragmentation": 0,
"heap_usage_percent": 40.4
},
"filesystem": {
"total_bytes": 65536,
"used_bytes": 10240,
"free_bytes": 55296,
"usage_percent": 15.6
},
"system": {
"uptime_ms": 123456,
"uptime_seconds": 123,
"uptime_formatted": "0h 2m 3s"
}
}
Implementation Notes
MonitoringServicereads fromCpuUsageand ESP8266 SDK APIs.- Filesystem metrics are gathered from LittleFS.
- CPU measurement is bracketed by
Spore::loop()callingcpuUsage.startMeasurement()andcpuUsage.endMeasurement().
Troubleshooting
- If
filesystem.total_bytesis zero, ensure LittleFS is enabled inplatformio.iniand an FS image is uploaded. - CPU usage values remain zero until the main loop runs and CPU measurement is started.