Skip to content

Distributed Network Monitoring system with custom UDP and TCP protocols for collecting and alerting network metrics.

License

Notifications You must be signed in to change notification settings

2101dudu/Network-Monitoring-System-CC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Network Monitoring System (NMS)

This project implements a Distributed Network Monitoring System designed for monitoring and analyzing the state of network links and devices in a distributed environment. The system leverages custom-built application-layer protocols, NetTask (UDP-based) and AlertFlow (TCP-based), to achieve efficient communication between clients (agents) and the central server.

Features

  • NetTask Protocol:

    • UDP-based, handles task distribution, metric collection, and agent registration.
    • Implements reliability mechanisms like ACKs, retransmissions, and packet ID management.
  • AlertFlow Protocol:

    • TCP-based, ensures reliable transmission of critical alerts when thresholds are exceeded.
  • Network Monitoring Tools:

    • Uses tools such as ping and iperf for metrics including latency, bandwidth, jitter, and packet loss.
    • Supports monitoring device metrics like CPU and RAM usage.
  • JSON-Based Task Management:

    • Tasks and thresholds are defined in JSON configuration files.
  • Scalable and Distributed:

    • Supports multiple agents reporting to a single server.

Requirements

  • Languages/Tools:

    • Go (Golang)
    • CORE Network Emulator (v7.5 or later)
    • Utilities: ping, iperf
  • Environment:

    • Linux-based systems for network emulation.
    • JSON files for configuration.

Project Structure

.
├── LICENSE
├── Makefile              # Automates build and run processes
├── README.md             # Project documentation
├── cmd/                  # Entrypoints for server and agent
│   └── nms/
│       ├── agent/
│       │   └── runner.go
│       └── server/
│           └── runner.go
├── configs/              # Configuration files
│   └── tasks.json        # JSON tasks configuration
├── docs/                 # Documentation
│   ├── report.pdf        # Technical report
│   ├── CC Enunciado TP2 24-25.pdf # Project statement
├── internal/             # Core system modules
│   ├── agent/
│   │   ├── alertflow/
│   │   │   └── tcp.go
│   │   └── nettask/
│   │       ├── handlePingTask.go
│   │       └── other-task-handlers.go
│   ├── server/
│   │   ├── alertflow/
│   │   │   └── handleAlert.go
│   │   └── nettask/
│   │       └── task-handlers.go
│   ├── jsonParse/
│   │   ├── parser.go
│   │   └── task.go
│   └── utils/
│       ├── tcp.go
│       └── utils.go
└── topology/
    └── CC-Topologia.imn  # Core emulator topology file

Usage Instructions

1. Installation

Clone the repository and navigate to the project directory:

git clone git@github.com:2101dudu/Network-Monitoring-System.git
cd Network-Monitoring-System

2. Build and Run

Server

  1. Build and run the server:
make server
  1. Build and start the server in verbose mode for debugging:
make server-verbose

Agent

  1. Build and run the agent:
make agent
  1. Build and start the agent in verbose mode for debugging:
make agent-verbose

3. Configuration

Edit the tasks.json file in the configs/ directory to define tasks, thresholds, and monitoring parameters.

Testing

  • Use the CORE Network Emulator to simulate networks and validate the system.
  • Deploy multiple agents and simulate scenarios with packet loss and alerts.
  • Ensure agents register correctly, execute tasks, and report metrics.

Sample Test Flow

  1. Start the server.
  2. Deploy agents across different simulated devices.
  3. Configure and load tasks using tasks.json.
  4. Observe metric collection and alert notifications.

Group Members

About

Distributed Network Monitoring system with custom UDP and TCP protocols for collecting and alerting network metrics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •