CPU Monitoring Module (cpu.py)
This commit is contained in:
64
core/scripts/telegrambot/utils/cpu.py
Normal file
64
core/scripts/telegrambot/utils/cpu.py
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
import psutil
|
||||||
|
import time
|
||||||
|
from utils.command import *
|
||||||
|
|
||||||
|
|
||||||
|
def get_system_usage():
|
||||||
|
cpu_usage = psutil.cpu_percent(interval=1)
|
||||||
|
ram = psutil.virtual_memory()
|
||||||
|
ram_usage = ram.percent
|
||||||
|
return cpu_usage, ram_usage
|
||||||
|
|
||||||
|
def format_alert_message(cpu_usage, ram_usage):
|
||||||
|
return (
|
||||||
|
"🚨ALERT🚨\n"
|
||||||
|
"High CPU and RAM usage detected ⚠️\n\n"
|
||||||
|
f"📈 CPU: {cpu_usage:.1f}%\n"
|
||||||
|
f"📋 RAM: {ram_usage:.1f}%"
|
||||||
|
)
|
||||||
|
|
||||||
|
def monitor_system_resources():
|
||||||
|
# Thresholds
|
||||||
|
CPU_THRESHOLD = 90.0
|
||||||
|
RAM_THRESHOLD = 90.0
|
||||||
|
CONFIRMATION_DELAY = 60 # seconds
|
||||||
|
|
||||||
|
try:
|
||||||
|
cpu_usage, ram_usage = get_system_usage()
|
||||||
|
|
||||||
|
if cpu_usage > CPU_THRESHOLD and ram_usage > RAM_THRESHOLD:
|
||||||
|
time.sleep(CONFIRMATION_DELAY)
|
||||||
|
cpu_usage, ram_usage = get_system_usage()
|
||||||
|
|
||||||
|
if cpu_usage > CPU_THRESHOLD and ram_usage > RAM_THRESHOLD:
|
||||||
|
alert_message = format_alert_message(cpu_usage, ram_usage)
|
||||||
|
|
||||||
|
for admin_id in ADMIN_USER_IDS:
|
||||||
|
try:
|
||||||
|
bot.send_message(admin_id, alert_message)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Failed to send alert to admin {admin_id}: {str(e)}")
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error monitoring system resources: {str(e)}")
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
@bot.message_handler(commands=['system'])
|
||||||
|
def check_system(message):
|
||||||
|
if not is_admin(message.from_user.id):
|
||||||
|
bot.reply_to(message, "Unauthorized access. You do not have permission to use this command.")
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
cpu_usage, ram_usage = get_system_usage()
|
||||||
|
response = (
|
||||||
|
"📊 System Resource Usage 📊\n\n"
|
||||||
|
f"📈 CPU Usage: {cpu_usage:.1f}%\n"
|
||||||
|
f"📋 RAM Usage: {ram_usage:.1f}%"
|
||||||
|
)
|
||||||
|
bot.reply_to(message, response)
|
||||||
|
except Exception as e:
|
||||||
|
bot.reply_to(message, f"Error checking system resources: {str(e)}")
|
||||||
Reference in New Issue
Block a user