A comprehensive system monitoring web application that tracks and visualizes CPU, RAM, network, and GPU usage in real-time.
SysMonitor provides a browser-based interface for monitoring system resources. The application collects performance metrics from your machine (CPU, RAM, GPU 0, GPU 1, GPU 2 and Network) and presents them in an intuitive dashboard with real-time updates and historical data visualization utilizing Plotly graphs.
- Real-time Monitoring: Visualize CPU, RAM, network, and up to 3 GPUs usage in real-time
- Historical Data: View performance trends with 3-hour historical graphs
- Log Management: Automatic log rotation with archiving of older data
- Always Running Service: Linux users can make use of the sysmonitor.service file to have the web app start on boot up of host machine.
- Python 3.6 or higher
- Modern web browser
- Linux, macOS, or Windows operating system
- Dependencies:
- Flask
- Dash
- Plotly
- psutil
- GPUtil
- pandas
-
Clone the repository:
git clone https://github.com/mixbits/SysMonitor.git cd SysMonitor -
Run the deployment script for your platform:
For Linux/macOS:
./install.sh
For Windows:
python deploy.py
-
Start the application:
For Linux/macOS:
./start.sh
For Windows:
start.bat
-
Create a Python virtual environment:
python3 -m venv venv
-
Activate the environment:
For Linux/macOS:
source venv/bin/activateFor Windows:
venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Start the application:
python sysmonitor.py
-
Edit the
sysmonitor.servicefile:sudo nano /etc/systemd/system/sysmonitor.service
-
Replace all instances of 'user' with your actual username in the file.
-
Enable and start the service:
sudo systemctl enable sysmonitor.service sudo systemctl start sysmonitor.service
Before running the application, you need to make a few configuration changes:
-
Replace Username: In
sysmonitor.pyandsysmonitor.service, replace all instances of 'user' with your actual system username. -
Set Hostname: In
dashboard.htmlandlogviewer.html, replace "(host machine name)" with your actual hostname:For example, change:
System Monitor (host machine name)
to:
System Monitor (myserver)
-
Port Configuration: By default, the application runs on port 5500. If you need to change this, modify the port in
sysmonitor.py.
Once the application is running, access the dashboard by opening a web browser and navigating to:
http://localhost:5500
Or if accessing from another device on your network:
http://your-server-ip:5500
Logs are stored in:
/home/your-username/Documents/SystemMonitor/logs/(Linux/macOS)- Or the equivalent directory on Windows
- Make sure port 5500 is open in your firewall
- Linux web application directory (replace 'user' with your username): /home/user/Documents/SystemMonitor/
- Ensure that all instances of 'user' within sysmonitor.py, dashboard.html and logviewer.html are changed to your Linux username
If the application fails to start:
- Check that all dependencies are installed
- Verify that the username has been replaced in all configuration files
- Ensure the application has permission to read system statistics
- Check the log file at
/home/your-username/Documents/SystemMonitor/logs/sysmonitor.log
This project is licensed under the MIT License. It utilizes Plotly, which is also licensed under the MIT License. For more details, please refer to the LICENSE.txt file.

