A complete Linux system monitoring solution using Bash, Docker, InfluxDB, and Grafana to collect, visualize, and store system metrics.
- ✅ Real-time monitoring of CPU, RAM, Disk, IP, Load Average
- 📄 Generate text, HTML, and Markdown reports
- 🖼️ GUI using
dialogand optionalzenity/yad - 📈 Python graph for memory usage
- 📡 Send metrics to InfluxDB for time-series storage
- 📊 Optional Grafana integration for visualization
- 🐳 Dockerized environment for easy deployment
| Tool | Purpose |
|---|---|
| Bash | Core scripting logic |
| Docker | Containerization |
| InfluxDB | Time-series data storage |
| Grafana | Optional metric visualization |
| psutil | Python library for memory graphs |
| dialog/yad | GUI options |
system-monitor/
├── monitor.sh # Collect system info
├── gui_monitor.sh # Dialog GUI
├── html_report.sh # Generate HTML reports
├── markdown_report.sh # Generate Markdown reports
├── memory_chart.py # Python-based memory graph
├── memory_chart.png # Output image
├── Dockerfile # Docker setup
├── docker-compose.yml # Docker multi-service config
├── logs/ # Text reports
├── html_logs/ # HTML reports
└── README.md # You're here!
# Give execution permission
chmod +x monitor.sh gui_monitor.sh html_report.sh
# Run monitor
./monitor.sh
# Launch GUI (dialog-based)
./gui_monitor.sh
# Generate HTML report
./html_report.shdocker-compose up --buildTo rebuild:
docker-compose down
docker-compose up --buildMake sure InfluxDB is running on localhost:8086 and create the database:
curl -i -X POST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE system_monitoring"- 🐍 Python Graph for memory:
python3 memory_chart.py-
📊 Grafana Integration:
- Add
InfluxDBdata source - Query metrics (e.g.,
cpu_usage,memory_usage) - Create beautiful dashboards
- Add
-
🌐 Host HTML reports via mini-server:
./serve.shThen go to: http://localhost:8080
Zeyad Mohamed Abdelwahab
GitHub: @Zeyad97
Temperature may not be available on virtual machines.
Make sure required tools likempstat,smartctl,dialog,bc, andsensorsare installed.
Feel free to fork, improve, or use this tool in your own projects.