GithubHelp home page GithubHelp logo

cervo78 / network-monitor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from iliasgal/network-monitor

0.0 0.0 0.0 47 KB

A Go-based tool for capturing and analysing network traffic

Shell 10.68% Go 89.32%

network-monitor's Introduction

Network Monitor

Overview

Network Monitor is a Go-based tool for capturing and analysing network traffic, designed for efficiency and compatibility with various platforms, including PCs or Raspberry Pi. It utilises InfluxDB for storing network metrics, providing insights into network performance and health.

Features

  • Comprehensive Packet Capture: Logs every packet, detailing size, source, destination, and protocol.
  • Performance Metrics: Measures latency, jitter, and packet loss to assess network health.
  • Data Aggregation and Visualisation: Stores metrics in InfluxDB, supporting complex analyses and visualisations with tools like Grafana or directly through the InfluxDB dashboards themselves.

network-monitor.png

Deployment

Network Monitor can be run on any computer or a Raspberry Pi, requiring minimal setup.

Prerequisites

  • A computer or Raspberry Pi with network access.
  • Docker installed for running InfluxDB in a container.
  • Go installed for running the Network Monitor application.

Setting Up InfluxDB

InfluxDB is used to store and manage the network metrics captured by Network Monitor. It runs in a Docker container, simplifying deployment and management.

  1. Ensure Docker is installed and running on your system.

  2. Use the provided docker-compose.yml file to launch InfluxDB:

    docker-compose up -d influxdb

Configuration

Before running Network Monitor, configure the connection to InfluxDB through an environment file (.env), which is not included in the repository for security reasons. Create this file with the following contents:

INFLUXDB_URL=YourInfluxDBURL #e.g. http://localhost:8086
INFLUXDB_ADMIN_TOKEN=YourInfluxDBToken
INFLUXDB_ORG=YourOrganisation
INFLUXDB_BUCKET=YourBucket

Replace YourInfluxDBToken, YourOrganisation, and YourBucket with your actual InfluxDB credentials and configuration.

Running Network Monitor

Use the provided script run.sh to build and run the Network Monitor application. Ensure the .env file is in the same directory as run.sh for the application to read and use the InfluxDB configuration.

./run.sh

This script builds the Go application and starts capturing network metrics, sending them to InfluxDB.

Conclusion

Network Monitor, with its detailed packet capturing and integration with InfluxDB, offers a powerful and flexible solution for monitoring network performance and health. Its ability to capture all packets, along with their size and protocol, opens up possibilities for in-depth network analysis and visualisation. Whether you're looking to troubleshoot network issues, optimise performance, or simply gain a better understanding of your network traffic, Network Monitor provides the tools and data you need to achieve your goals.

network-monitor's People

Contributors

iliasgal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.