# Network Monitoring System Project
## Project Overview
Build a basic network monitoring system that continuously pings a list of hosts and reports their availability status. This project demonstrates practical use of ICMP, network automation, and monitoring concepts.
## What the System Does
The system reads a list of host IP addresses or domain names from a configuration file. It continuously pings each host at regular intervals and records whether the host responded. It displays a real-time dashboard showing the status of each host as either online or offline. It logs status changes with timestamps. It can send an alert when a host goes offline or comes back online.
## Key Components
Host list management reads hosts from a file and allows adding or removing hosts without restarting the program.
Ping functionality uses the subprocess module to run the system ping command and parses the output to determine if the host responded. Alternatively it uses raw sockets to send ICMP packets directly.
Concurrent monitoring uses threading to ping all hosts simultaneously rather than sequentially so that slow or unresponsive hosts do not delay checking other hosts.
Status tracking maintains the current status of each host and detects transitions from online to offline or offline to online.
Logging records all status changes to a file with timestamps for historical analysis.
## Metrics to Track
Round trip time from ping responses measures latency. Packet loss percentage over multiple pings indicates link quality. Uptime percentage over a time period shows reliability. Time since last seen online tracks outage duration.
## Dashboard Display
Display a table updated every few seconds showing host name or IP, current status, last response time, response time, and uptime percentage. Use color coding with green for online and red for offline if the terminal supports it.
## Extensions to Try
Add SNMP polling to collect CPU and memory statistics from managed network devices. Add port checking to verify that specific services are running not just that the host responds to ping. Add email or SMS notification when hosts go offline. Store historical data in a database. Create a web interface to display monitoring data in a browser.Back to Subject