mirror of
https://github.com/pacnpal/simpleguardhome.git
synced 2025-12-20 04:21:13 -05:00
feat(docker): add monitoring script and update Dockerfile and .dockerignore for enhanced backup monitoring and system resource tracking
This commit is contained in:
66
monitor.py
Normal file
66
monitor.py
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import psutil
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
|
||||
# Set up logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
|
||||
def monitor_system():
|
||||
backups = [
|
||||
"main", "backup1", "backup2", "backup3", "backup4",
|
||||
"rescue", "emergency", "last_resort", "ultrabackup"
|
||||
]
|
||||
|
||||
while True:
|
||||
try:
|
||||
stats = {
|
||||
"cpu": psutil.cpu_percent(),
|
||||
"mem": psutil.virtual_memory().percent,
|
||||
"disk": psutil.disk_usage("/").percent,
|
||||
"timestamp": time.time()
|
||||
}
|
||||
|
||||
# Check all backup directories
|
||||
for backup in backups:
|
||||
path = f"/app/{backup}/src/simpleguardhome"
|
||||
if not os.path.exists(path):
|
||||
stats[f"{backup}_missing"] = True
|
||||
logging.warning(f"Backup missing: {backup}")
|
||||
|
||||
# Save stats
|
||||
try:
|
||||
with open("/app/monitor/stats.json", "w") as f:
|
||||
json.dump(stats, f)
|
||||
except Exception as e:
|
||||
logging.error(f"Failed to write stats: {str(e)}")
|
||||
|
||||
# Log warnings for high resource usage
|
||||
if stats["cpu"] > 80:
|
||||
logging.warning(f"High CPU usage: {stats['cpu']}%")
|
||||
if stats["mem"] > 80:
|
||||
logging.warning(f"High memory usage: {stats['mem']}%")
|
||||
if stats["disk"] > 80:
|
||||
logging.warning(f"High disk usage: {stats['disk']}%")
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Monitoring error: {str(e)}")
|
||||
|
||||
time.sleep(5)
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.info("Starting system monitor...")
|
||||
try:
|
||||
monitor_system()
|
||||
except KeyboardInterrupt:
|
||||
logging.info("Shutting down monitor...")
|
||||
sys.exit(0)
|
||||
except Exception as e:
|
||||
logging.error(f"Fatal error: {str(e)}")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user