|
| 1 | +import psutil |
| 2 | +import schedule |
| 3 | +import time |
| 4 | +import logging |
| 5 | + |
| 6 | + |
| 7 | +# Function to log messages |
| 8 | +def log_message(message): |
| 9 | + # Configure logging |
| 10 | + logging.basicConfig(filename='system_monitor.log', level=logging.INFO, |
| 11 | + format='%(asctime)s - %(message)s') |
| 12 | + logging.info(message) |
| 13 | + |
| 14 | + |
| 15 | +# Function to print alerts to the console |
| 16 | +def print_alert(message): |
| 17 | + print(f"ALERT: {message}") |
| 18 | + |
| 19 | + |
| 20 | +# Health check functions |
| 21 | +def check_cpu_usage(threshold=50): |
| 22 | + cpu_usage = psutil.cpu_percent(interval=1) |
| 23 | + if cpu_usage > threshold: |
| 24 | + message = f"High CPU usage detected: {cpu_usage}%" |
| 25 | + log_message(message) |
| 26 | + print_alert(message) |
| 27 | + |
| 28 | + |
| 29 | +def check_memory_usage(threshold=80): |
| 30 | + memory_usage = psutil.virtual_memory().percent |
| 31 | + if memory_usage > threshold: |
| 32 | + message = f"High memory usage detected: {memory_usage}%" |
| 33 | + log_message(message) |
| 34 | + print_alert(message) |
| 35 | + |
| 36 | + |
| 37 | +def check_disk_space(path='/', threshold=75): |
| 38 | + disk_usage = psutil.disk_usage(path).percent |
| 39 | + if disk_usage > threshold: |
| 40 | + message = f"Low disk space detected: {disk_usage}%" |
| 41 | + log_message(message) |
| 42 | + print_alert(message) |
| 43 | + |
| 44 | + |
| 45 | +def check_network_traffic(threshold=100 * 1024 * 1024): |
| 46 | + network_traffic = psutil.net_io_counters().bytes_recv +\ |
| 47 | + psutil.net_io_counters().bytes_sent |
| 48 | + if network_traffic > threshold: |
| 49 | + message = f"High network traffic detected: {network_traffic:.2f} MB" |
| 50 | + log_message(message) |
| 51 | + print_alert(message) |
| 52 | + |
| 53 | + |
| 54 | +# Function to run health checks |
| 55 | +def run_health_checks(): |
| 56 | + print("Monitoring the system...") |
| 57 | + log_message("Running system health checks...") |
| 58 | + |
| 59 | + check_cpu_usage() |
| 60 | + check_memory_usage() |
| 61 | + check_disk_space() |
| 62 | + check_network_traffic() |
| 63 | + |
| 64 | + log_message("Health checks completed.") |
| 65 | + |
| 66 | + |
| 67 | +# Schedule health checks to run every minute |
| 68 | +schedule.every(1).minutes.do(run_health_checks) |
| 69 | + |
| 70 | +# Main loop to run scheduled tasks |
| 71 | +while True: |
| 72 | + schedule.run_pending() |
| 73 | + time.sleep(1) |
0 commit comments