mirror of
https://github.com/pacnpal/simpleguardhome.git
synced 2025-12-20 04:21:13 -05:00
66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
#!/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) |