با یک کتابخانه واحد، می توانید مجموعه ای از معیارهای سیستم را زیر نظر داشته باشید و مطمئن شوید که همه چیز به خوبی اجرا می شود.
اکثر سازمان ها برای اجرای عملیات خود به شدت به زیرساخت فناوری اطلاعات خود متکی هستند. خرابی های برنامه ریزی نشده سیستم یا کاهش عملکرد می تواند منجر به اختلال، زیان مالی و آسیب به شهرت شود.
بررسی خودکار سلامت سیستم برای اطمینان از پایدار و قابل اعتماد بودن زیرساخت فناوری اطلاعات بسیار مهم است. با نظارت بر معیارهای مهم و تشخیص سریع ناهنجاری ها، می توانید زمان خرابی را به حداقل برسانید.
تعریف چک های سلامت
تعیین اینکه چه بررسی های سلامتی را می خواهید روی سیستم خود انجام دهید ضروری است. شما باید معیارهای روشنی را برای آنچه که نظارت می کنید و چرا تعیین کنید. با شناسایی اهداف اولیه سیستم خود شروع کنید. چه کارکردها یا خدماتی را ارائه می دهد؟
سپس، معیارهای عملکرد را بر اساس داده های تاریخی تنظیم کنید و اطمینان حاصل کنید که بررسی های سلامتی شما استفاده کارآمد از منابع سیستم را ارزیابی می کند. در نهایت، آستانه هایی را که نشان دهنده یک مشکل هستند، تعریف کنید. چند درصد از مصرف منابع را زیاد یا کم در نظر می گیرید؟ در چه مرحله ای سیستم باید یک هشدار ایجاد کند؟
انتخاب کتابخانه ها و تنظیم محیط
برای خودکار کردن فرآیند نظارت بر سیستم در پایتون، به کتابخانههای زیر نیاز دارید تا به شما در جمعآوری معیارهای سیستم و سپس زمانبندی بررسیها کمک کنند.
- psutil: این یک کتابخانه بین پلتفرمی است که یک رابط برای بازیابی اطلاعات در مورد استفاده از سیستم (CPU، حافظه، دیسک، شبکه، حسگرها) فراهم می کند.
- برنامه زمانبندی: این کتابخانه یک راه ساده برای برنامه ریزی کارها برای اجرا در فواصل زمانی مشخص ارائه می دهد.
- time: یک کتابخانه داخلی پایتون که از آن برای عملیات مربوط به زمان استفاده خواهید کرد.
- ورود به سیستم: یکی دیگر از کتابخانه های داخلی که برای ایجاد گزارش های بررسی سلامت سیستم استفاده خواهید کرد.
با ایجاد یک محیط مجازی پایتون جدید، تنظیمات را شروع کنید. این از هرگونه تداخل احتمالی کتابخانه نسخه جلوگیری می کند. سپس دستور ترمینال زیر را برای نصب کتابخانه های مورد نیاز با Pip اجرا کنید:
pip install psutil schedule
پس از نصب کتابخانه ها بر روی سیستم شما، محیط شما آماده است.
کد منبع کامل در a موجود است
مخزن GitHub
.
واردات کتابخانه های مورد نیاز
یک اسکریپت جدید، monitoring.py ایجاد کنید و آن را با وارد کردن کتابخانه های مورد نیاز شروع کنید:
import psutil
import schedule
import time
import logging
وارد کردن کتابخانه ها به شما امکان می دهد از عملکردی که آنها در کد خود ارائه می دهند استفاده کنید.
ثبت و گزارش
شما به راهی برای ثبت نتایج بررسی های سلامتی خود نیاز دارید. Logging به عنوان یک ابزار حیاتی برای ضبط و حفظ سابقه تاریخی رویدادها و مشکلات اشکال زدایی در کد شما عمل می کند. همچنین نقش مهمی در تحلیل عملکرد ایفا می کند.
از کتابخانه ورود به سیستم داخلی برای ایجاد گزارش های خود برای این پروژه استفاده کنید. می توانید پیام های گزارش را در فایلی با نام system_monitor.log ذخیره کنید.
# Function to log messages
def log_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)
برای گزارش، یک پیام هشدار را روی کنسول چاپ کنید تا به عنوان اعلان فوری در مورد هر مشکلی که نیاز به توجه دارد خدمت کند.
# Function to print alerts to the console
def print_alert(message):
print(f"ALERT: {message}")
توابع بررسی سلامت از این توابع برای ثبت و گزارش یافته های مربوطه خود استفاده خواهند کرد.
ایجاد توابع بررسی سلامت
برای هر بررسی سلامت، تابعی را تعریف کنید که یک آزمایش خاص را در بر می گیرد که جنبه مهمی از زیرساخت شما را ارزیابی می کند.
نظارت بر استفاده از CPU
با تعریف تابعی شروع کنید که استفاده از CPU را نظارت می کند. این به عنوان یک شاخص حیاتی از عملکرد کلی سیستم و استفاده از منابع عمل می کند. استفاده بیش از حد از CPU منجر به کندی سیستم، عدم پاسخگویی و حتی خرابی می شود و خدمات ضروری را به شدت مختل می کند.
با بررسی منظم استفاده از CPU و تنظیم آستانه های مناسب، مدیران سیستم می توانند گلوگاه های عملکرد، فرآیندهای فشرده منابع، یا مشکلات سخت افزاری بالقوه را شناسایی کنند.
# Health check functions
def check_cpu_usage(threshold=50):
cpu_usage = psutil.cpu_percent(interval=1)
if cpu_usage > threshold:
message = f"High CPU usage detected: {cpu_usage}%"
log_message(message)
print_alert(message)
این تابع استفاده فعلی از CPU سیستم را بررسی می کند. اگر میزان استفاده از CPU از آستانه درصد فراتر رود، پیامی را ثبت می کند که نشان دهنده مصرف بالای CPU است و یک پیام هشدار چاپ می کند.
نظارت بر مصرف حافظه
عملکرد دیگری را تعریف کنید که میزان استفاده از حافظه را کنترل کند. با ردیابی منظم استفاده از حافظه، می توانید نشت حافظه، فرآیندهای تشنه منابع و تنگناهای احتمالی را شناسایی کنید. این روش از کند شدن، خرابی و قطعی سیستم جلوگیری می کند.
def check_memory_usage(threshold=80):
memory_usage = psutil.virtual_memory().percent
if memory_usage > threshold:
message = f"High memory usage detected: {memory_usage}%"
log_message(message)
print_alert(message)
مشابه بررسی استفاده از CPU، شما آستانه ای برای مصرف بالای حافظه تعیین می کنید. اگر میزان استفاده از حافظه از آستانه فراتر رود، یک هشدار ثبت و چاپ می کند.
مانیتورینگ فضای دیسک
تابعی را تعریف کنید که فضای دیسک را کنترل کند. با نظارت مداوم بر در دسترس بودن فضای دیسک، می توانید مشکلات احتمالی ناشی از کاهش منابع را برطرف کنید. تمام شدن فضای دیسک می تواند منجر به خرابی سیستم، خرابی داده ها و قطع سرویس شود. بررسی فضای دیسک به اطمینان از وجود ظرفیت ذخیره سازی کافی کمک می کند.
def check_disk_space(path='/', threshold=75):
disk_usage = psutil.disk_usage(path).percent
if disk_usage > threshold:
message = f"Low disk space detected: {disk_usage}%"
log_message(message)
print_alert(message)
این تابع میزان استفاده از فضای دیسک یک مسیر مشخص را بررسی می کند. مسیر پیش فرض دایرکتوری ریشه / است. اگر فضای دیسک کمتر از آستانه باشد، ثبت می شود و یک هشدار چاپ می کند.
نظارت بر ترافیک شبکه
یک تابع نهایی را تعریف کنید که بر جریان داده های سیستم شما نظارت می کند. این به تشخیص زودهنگام جهشهای غیرمنتظره در ترافیک شبکه کمک میکند، که میتواند نشاندهنده نقضهای امنیتی یا مشکلات زیرساختی باشد.
def check_network_traffic(threshold=100 * 1024 * 1024):
network_traffic = psutil.net_io_counters().bytes_recv +\
psutil.net_io_counters().bytes_sent
if network_traffic > threshold:
message = f"High network traffic detected: {network_traffic:.2f} MB"
log_message(message)
print_alert(message)
این تابع ترافیک شبکه را با جمع کردن بایت های ارسالی و دریافتی کنترل می کند. آستانه بر حسب بایت است. اگر ترافیک شبکه از آستانه فراتر رود، یک هشدار ثبت و چاپ می کند.
پیاده سازی منطق نظارت
اکنون که عملکردهای بررسی سلامت را دارید، به سادگی هر کدام را به نوبه خود از یک عملکرد کنترلر فراخوانی کنید. هر بار که این بررسی کلی اجرا می شود، می توانید خروجی را چاپ کنید و پیامی را ثبت کنید:
# Function to run health checks
def run_health_checks():
print("Monitoring the system...")
log_message("Running system health checks...")
check_cpu_usage()
check_memory_usage()
check_disk_space()
check_network_traffic()
log_message("Health checks completed.")
این تابع تمام بررسی های سلامت را اجرا می کند و یک نمای یکپارچه از وضعیت سلامت سیستم شما ارائه می دهد.
زمان بندی بررسی های خودکار و اجرای برنامه
برای خودکار کردن نظارت در فواصل زمانی خاص، از کتابخانه برنامه استفاده خواهید کرد. در صورت نیاز می توانید فاصله را تنظیم کنید.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
اکنون فرآیند نظارت بر سیستم را در یک حلقه پیوسته اجرا کنید.
# Main loop to run scheduled tasks
while True:
schedule.run_pending()
time.sleep(1)
این حلقه به طور مداوم وظایف برنامه ریزی شده را بررسی می کند و زمانی که زمان آنها فرا می رسد آنها را اجرا می کند. وقتی برنامه را اجرا می کنید خروجی به صورت زیر است:
این برنامه گزارش های نظارت را در فایل system_monitor.log ثبت می کند و یک هشدار در ترمینال نمایش می دهد.
پیشبرد برنامه مانیتورینگ سیستم
این بررسی های نظارتی تنها مواردی نیستند که psutil پشتیبانی می کند. میتوانید با استفاده از رویکردی مشابه، عملکردهای نظارتی بیشتری را متناسب با نیاز خود اضافه کنید.
همچنین می توانید عملکرد گزارش دهی را برای استفاده از ایمیل به جای خروجی یک پیام ساده در کنسول بهبود دهید.