A personal project that applies machine learning to network/infrastructure telemetry to detect early signs of device failure before they cause an outage — inspired by the kind of predictive fleet health and zero-touch automation work described in large-scale hardware/infrastructure operations roles.
Built on top of hands-on network monitoring experience with tools like SolarWinds, NetScout, and ThousandEyes, this project explores how unsupervised ML (Isolation Forest) and trend analysis can move fault detection from "alert after a threshold is breached" to "flag the device that's trending toward failure."
Note: This uses simulated telemetry data (see
src/telemetry_simulator.py) rather than data pulled from a live production network, so it can be run and shared publicly without exposing any employer's infrastructure. The simulator seeds realistic degradation patterns (rising error rate, memory creep, thermal drift) so the detection pipeline has real signal to find.
- Telemetry simulation (
src/telemetry_simulator.py) — generates time-series metrics (CPU, memory, interface error rate, latency, packet loss, temperature) for a simulated fleet of 40 network devices, with a subset seeded to gradually degrade over the observation window. - Predictive risk scoring (
src/anomaly_detector.py) — combines an Isolation Forest model (fleet-wide "what does normal look like") with a rolling trend/z-score analysis (device's own baseline drift) to produce a 0–100 predictive risk score per device. - Automated triage (
src/alert_engine.py) — classifies the likely fault domain (physical layer, compute, network path, thermal) from the dominant signal and suggests a first remediation step, auto-escalating HIGH/CRITICAL devices. - Fleet dashboard (
src/main.py) — renders a PNG dashboard showing the highest-risk devices and their CPU trend over time, plus a fleet health summary in the terminal.
| Project piece | Real-world equivalent |
|---|---|
| Multi-signal risk scoring | Correlating telemetry/sensor/log signals to catch failures before customer impact |
| Rolling trend detection | Catching slow degradation (failing fan, flapping optic, memory leak) early |
| Rule-based triage + auto-escalation | Step toward zero-touch: detect → diagnose → triage automatically |
| Fleet summary metrics | Failure rate, % healthy — the kind of numbers tracked on a fleet health dashboard |
pip install -r requirements.txt
python -m src.mainThis will:
- generate
data/fleet_telemetry.csv - print a fleet health summary and ranked at-risk device list
- save
docs/fleet_dashboard.png
Run the tests:
python tests/test_anomaly_detector.py=== FLEET HEALTH SUMMARY ===
fleet_size: 40
critical_count: 0
high_count: 6
auto_escalated: 6
healthy_pct: 85.0
=== TOP AT-RISK DEVICES ===
DEVICE RISK SEVERITY FAULT DOMAIN ACTION
dev-003 66.3 HIGH physical-layer Inspect optics/cabling on affected interface; check for CRC errors.
dev-038 63.8 HIGH network-path Check for interface flapping or congestion; verify BFD/routing neighbor state.
...
Detector caught 6/6 simulated failing devices (6 total flagged HIGH/CRITICAL).
- Swap the simulator for real SNMP/NetFlow polling (e.g. via
pysnmpor a SolarWinds API export) to test against real telemetry - Add a lightweight Flask/Streamlit UI in place of the static dashboard
- Persist historical scores to track mean-time-to-detect (MTTD) over time
- Experiment with LSTM/Prophet for time-series forecasting instead of point-in-time anomaly scoring
netsentry/
├── src/
│ ├── telemetry_simulator.py # synthetic fleet telemetry generator
│ ├── anomaly_detector.py # Isolation Forest + trend-based risk scoring
│ ├── alert_engine.py # rule-based triage / remediation suggestions
│ └── main.py # pipeline orchestration + dashboard rendering
├── tests/
│ └── test_anomaly_detector.py
├── docs/
│ └── fleet_dashboard.png # generated on run
├── data/
│ └── fleet_telemetry.csv # generated on run
└── requirements.txt
Chiranjeevi Nadambaram Balaji — Network Engineer linkedin.com/in/balaji-c006