A powerful real-time network traffic monitoring dashboard that provides dynamic statistics visualization. Built with Flask and Chart.js, Sentinel-DSTAT offers a beautiful, modern interface for monitoring your network's bandwidth usage and packet rates with interactive charts and detailed statistics.
Features • Screenshots • Installation • Configuration • Usage • Contributing
-
🚀 Real-time Monitoring
- Live bandwidth and packet rate tracking
- Auto-updating statistics and charts
- Multi-interface support
- Configurable update intervals
-
📊 Advanced Visualization
- Interactive line charts with hover details
- Smooth animations and transitions
- Peak and average value tracking
- Trend indicators for data changes
-
💫 Modern UI/UX
- Sleek dark theme design
- Responsive layout for all devices
- Interactive stat cards with hover effects
- Clean and intuitive interface
-
⚙️ Powerful Features
- Auto-scaling units (B/s to GB/s)
- Optional traffic history logging
- Customizable monitoring options
- Rich console output with status indicators
Live chart updates showing bandwidth and packet rate changes
Rich console output with status indicators and real-time stats
# Clone the repository
git clone https://github.com/ampedwastaken/sentinel-dstat.git
cd sentinel-dstat
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt# Start with default configuration
python app.py
# Open in your browser
http://localhost:5000# Custom configuration file
python app.py --config custom_config.json
# Custom host and port
python app.py --host localhost --port 8080
# Run with admin privileges (if needed)
sudo python app.py{
"monitoring": {
"enabled": true,
"interval": 1.0,
"store_history": false,
"history_file": "network_history.json",
"max_history_records": 1000
},
"network": {
"interfaces": ["all"],
"bandwidth_units": true,
"decimal_places": 2
},
"server": {
"host": "0.0.0.0",
"port": 5000,
"debug": false
},
"chart": {
"max_data_points": 30,
"update_interval": 1000
}
}| Option | Description | Default | Type |
|---|---|---|---|
monitoring.enabled |
Enable network monitoring | true |
boolean |
monitoring.interval |
Data collection interval (seconds) | 1.0 |
float |
monitoring.store_history |
Enable traffic history logging | false |
boolean |
monitoring.history_file |
History file path | "network_history.json" |
string |
monitoring.max_history_records |
Maximum history records | 1000 |
integer |
| Option | Description | Default | Type |
|---|---|---|---|
network.interfaces |
Interfaces to monitor | ["all"] |
array |
network.bandwidth_units |
Auto-format bandwidth units | true |
boolean |
network.decimal_places |
Decimal places for values | 2 |
integer |
| Option | Description | Default | Type |
|---|---|---|---|
server.host |
Server host address | "0.0.0.0" |
string |
server.port |
Server port number | 5000 |
integer |
server.debug |
Flask debug mode | false |
boolean |
| Option | Description | Default | Type |
|---|---|---|---|
chart.max_data_points |
Chart data points | 30 |
integer |
chart.update_interval |
Chart update interval (ms) | 1000 |
integer |
{
"network": {
"interfaces": ["eth0", "wlan0"],
"bandwidth_units": true,
"decimal_places": 2
}
}{
"monitoring": {
"store_history": true,
"history_file": "custom_history.json",
"max_history_records": 2000
}
}{
"chart": {
"max_data_points": 60,
"update_interval": 500
}
}sentinel-dstat/
├── app.py # Main application
├── config.json # Configuration
├── requirements.txt # Dependencies
├── README.md # Documentation
├── templates/ # HTML templates
│ └── index.html # Dashboard UI
├── logs/ # Log files
└── docs/ # Documentation assets
├── logo.png
├── dashboard_light.png
├── dashboard_heavy.png
├── realtime.png
├── mobile.png
└── console.png
# Solution: Run with admin privileges
sudo python app.py# Solution: Use a different port
python app.py --port 8080- Check if running with sufficient permissions
- Verify network interface names in config
- Ensure monitoring.enabled is true
- Increase monitoring.interval
- Reduce chart.max_data_points
- Disable debug mode
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Please ensure your PR:
- Follows the existing code style
- Includes appropriate documentation
- Adds necessary tests
- Updates relevant documentation
This project is licensed under the MIT License - see the LICENSE file for details.
