03
NodeSentinel
Distributed node monitoring platform using lightweight C agents and a Python backend. Communicates over MQTT with real-time alerting, metric collection, and dashboard telemetry.
Overview
NodeSentinel is a lightweight distributed monitoring platform designed to observe resource-constrained nodes in real time. Each monitored host runs a small C agent that periodically publishes telemetry over MQTT. A central Python backend aggregates, stores, and visualizes the data.
System Design
[Node Agent (C)] ──MQTT──► [Broker] ──► [Python Backend] ──► [Dashboard]
Node Agent
- Written in C for minimal footprint — runs comfortably on embedded Linux boards
- Collects CPU usage, memory pressure, disk I/O, and network throughput
- Publishes JSON payloads to per-node MQTT topics on a configurable interval
- Reconnects automatically on broker disconnect
Backend
- Subscribes to all agent topics with a wildcard subscription
- Persists metrics to a time-series store
- Evaluates threshold rules and fires alerts via webhook or email
Dashboard
- Real-time tile per node showing current health status
- Sparkline history for each metric
- Alert timeline with severity levels
Tech Stack
| Component | Technology |
|---|---|
| Agent | C, libmosquitto |
| Broker | Mosquitto (MQTT 3.1.1) |
| Backend | Python, paho-mqtt |
| Alerting | Webhook / SMTP |