Skip to content

Real-time network monitoring tool using Django, Celery, and Redis.

Notifications You must be signed in to change notification settings

Srinath0916/NetPulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NetPulse - Open Source Network Monitoring

A real-time network monitoring dashboard built with Django and Celery for monitoring network devices and services with ICMP ping checks.

πŸš€ Tech Stack

Django Celery Redis Bootstrap SQLite

πŸ“‹ Features

  • Real-time ICMP Ping Monitoring - Monitor network devices using pythonping
  • Background Task Processing - Asynchronous monitoring with Celery & Redis
  • Responsive Dashboard - Clean, professional interface with live status indicators
  • OpenWISP-standard UUIDs - Database scalability with UUID primary keys
  • Device Management - Add, edit, and monitor multiple network devices
  • Status Tracking - Real-time online/offline status with timestamps
  • Auto-refresh Dashboard - Live updates every 30 seconds

πŸ› οΈ Installation

Prerequisites

  • Python 3.8+
  • Redis Server
  • Git

Step 1: Clone the Repository

git clone https://github.com/yourusername/netpulse.git
cd netpulse

Step 2: Create Virtual Environment

python3 -m venv netpulse_env
source netpulse_env/bin/activate  # On Windows: netpulse_env\Scripts\activate

Step 3: Install Dependencies

pip install django celery redis pythonping django-celery-beat

Step 4: Install and Start Redis

macOS (using Homebrew):

brew install redis
brew services start redis

Ubuntu/Debian:

sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server

Windows: Download and install Redis from the official website or use WSL.

Step 5: Database Setup

python manage.py makemigrations
python manage.py migrate

Step 6: Create Superuser (Optional)

python manage.py createsuperuser

Step 7: Start Development Server

python manage.py runserver

Visit http://127.0.0.1:8000 to access the NetPulse dashboard.

πŸš€ How to Run

NetPulse requires three separate processes to run properly:

Terminal 1: Django Development Server

source netpulse_env/bin/activate
python manage.py runserver

Terminal 2: Celery Worker

source netpulse_env/bin/activate
celery -A config worker --loglevel=info

Terminal 3: Celery Beat Scheduler (Optional - for scheduled tasks)

source netpulse_env/bin/activate
celery -A config beat --loglevel=info

πŸ“± Usage

  1. Access Dashboard: Navigate to http://127.0.0.1:8000
  2. Add Devices: Use the Django admin panel at http://127.0.0.1:8000/admin
  3. Monitor Status: View real-time device status on the dashboard
  4. Check Logs: Monitor Celery worker logs for ping results

πŸ—οΈ Project Structure

netpulse/
β”œβ”€β”€ config/                 # Django project settings
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ celery.py          # Celery configuration
β”‚   β”œβ”€β”€ settings.py        # Django settings
β”‚   └── urls.py            # Main URL configuration
β”œβ”€β”€ monitoring/            # Main monitoring app
β”‚   β”œβ”€β”€ models.py          # Device and monitoring models
β”‚   β”œβ”€β”€ tasks.py           # Celery tasks for ping monitoring
β”‚   β”œβ”€β”€ views.py           # Dashboard views
β”‚   β”œβ”€β”€ urls.py            # App URL configuration
β”‚   └── templates/         # HTML templates
β”œβ”€β”€ manage.py              # Django management script
└── README.md              # This file

πŸ”§ Configuration

Celery Settings

The project uses Redis as both message broker and result backend. Configuration is in config/settings.py:

CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_TIMEZONE = "UTC"

Device Model

Devices use OpenWISP-standard UUID primary keys for scalability:

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

πŸ§ͺ Testing

Run the built-in Django tests:

python manage.py test

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License

Copyright (c) 2026 NetPulse

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

πŸ™ Acknowledgments

  • Built with Django web framework
  • Background tasks powered by Celery
  • Network monitoring using pythonping
  • UI components from Bootstrap 5
  • Inspired by OpenWISP network management standards

NetPulse - Keeping your network pulse in check! πŸ’“

About

Real-time network monitoring tool using Django, Celery, and Redis.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published