feat(monitor): active push loop replacing standalone monitor
Adds a periodic POST loop to <backend>/monitor/server/heartbeat so HF plugin can take over the standalone harborforge-monitor daemon's job — same X-API-Key header, same flat telemetry shape (cpu_pct / mem_pct / disk_pct / swap_pct / load_avg / uptime_seconds / plugin_version / agents[]). HF backend stays unchanged. Config: monitor_push_enabled (default false; opt-in to avoid surprise heartbeats from existing deployments), monitor_push_interval_seconds (default 30), reuses apiKey for the X-API-Key header. Lift the container's HF_MONITER_API_KEY into config.apiKey, flip monitor_push_enabled true, then docker rm -f the container — DB last_seen_at keeps advancing under the plugin's loop. Collector grew swap + cpu sampling (two reads of /proc/stat over a 1-second window when SampleCPU=true). Bridge endpoint stays cheap (SampleCPU=false on demand); push loop is the only caller paying the sampling cost. E2E in sim: monitor_push_enabled=true + apiKey from injected MonitoredServer row → server_states.last_seen_at advances exactly every interval_seconds (10s configured, 10s observed). cpu/mem/disk/ swap_pct all populate correctly.
This commit is contained in:
@@ -37,12 +37,16 @@ Next steps:
|
||||
"harbor-forge"
|
||||
2. Write ${PLUGIN_DIR}/config.json — sample:
|
||||
{
|
||||
"backendUrl": "https://monitor.hangman-lab.top",
|
||||
"backendUrl": "https://hf-api.hangman-lab.top",
|
||||
"identifier": "server-t3",
|
||||
"apiKey": "g1_xxx",
|
||||
"monitor_port": 9100,
|
||||
"apiKey": "<copy from HF_MONITER_API_KEY>",
|
||||
"monitor_push_enabled": true,
|
||||
"monitor_push_interval_seconds": 30,
|
||||
"monitor_port": 0,
|
||||
"calendar_enabled": true,
|
||||
"calendar_heartbeat_interval_seconds": 30
|
||||
}
|
||||
3. Restart the host: systemctl --user restart plexum
|
||||
4. Verify push is landing (DB last_seen_at advancing) and then
|
||||
remove the standalone harborforge-monitor container.
|
||||
EOF
|
||||
|
||||
Reference in New Issue
Block a user