باستخدام مكتبة واحدة، يمكنك مراقبة مجموعة من مقاييس النظام والتأكد من أن كل شيء يعمل بسلاسة.

تعتمد معظم المؤسسات بشكل كبير على البنية التحتية لتكنولوجيا المعلومات الخاصة بها لتشغيل عملياتها. يمكن أن يؤدي فشل النظام غير المخطط له أو تدهور الأداء إلى حدوث اضطرابات وخسائر مالية والإضرار بالسمعة.

تعد عمليات التحقق من سلامة النظام المؤتمتة أمرًا ضروريًا لضمان بقاء البنية التحتية لتكنولوجيا المعلومات مستقرة وموثوقة. ومن خلال مراقبة المقاييس المهمة والكشف الفوري عن الحالات الشاذة، يمكنك تقليل وقت التوقف عن العمل.

تعريف الفحوصات الصحية

من الضروري تحديد الفحوصات الصحية التي تريد إجراؤها على نظامك. يجب عليك وضع معايير واضحة لما ستراقبه ولماذا. ابدأ بتحديد الأهداف الأساسية لنظامك. ما هي الوظائف أو الخدمات التي تقدمها؟

بعد ذلك، قم بتعيين معايير الأداء بناءً على البيانات التاريخية وتأكد من أن فحوصاتك الصحية تقوم بتقييم الاستخدام الفعال لموارد النظام. وأخيرًا، حدد الحدود التي تشير إلى وجود مشكلة. ما هي النسبة المئوية لاستخدام الموارد التي تعتبرها مرتفعة أو منخفضة؟ في أي نقطة يجب على النظام إطلاق التنبيه؟

instagram viewer

اختيار المكتبات وإعداد بيئتك

لأتمتة عملية مراقبة النظام في بايثون، ستحتاج إلى المكتبات التالية لمساعدتك في جمع مقاييس النظام ثم جدولة عمليات التحقق.

  • psutil: هذه مكتبة مشتركة بين الأنظمة الأساسية توفر واجهة لاسترداد المعلومات حول استخدام النظام (وحدة المعالجة المركزية والذاكرة والأقراص والشبكة وأجهزة الاستشعار).
  • جدول: توفر هذه المكتبة طريقة بسيطة لجدولة المهام ليتم تشغيلها على فترات زمنية محددة.
  • وقت: مكتبة Python مدمجة ستستخدمها في العمليات المرتبطة بالوقت.
  • تسجيل: مكتبة مدمجة أخرى ستستخدمها لإنشاء سجلات فحوصات سلامة النظام.

ابدأ في إعداد الأشياء إنشاء بيئة بايثون افتراضية جديدة. سيؤدي هذا إلى منع أي تعارضات محتملة في مكتبة الإصدار. ثم قم بتشغيل الأمر الطرفي التالي إلى قم بتثبيت المكتبات المطلوبة باستخدام Pip:

pip install psutil schedule

بمجرد تثبيت المكتبات على نظامك، تصبح البيئة الخاصة بك جاهزة.

كود المصدر الكامل متاح في مستودع جيثب.

استيراد المكتبات المطلوبة

إنشاء برنامج نصي جديد، مراقبة.py، وابدأ باستيراد المكتبات المطلوبة:

import psutil
import schedule
import time
import logging

سيسمح لك استيراد المكتبات باستخدام الوظائف التي تقدمها في التعليمات البرمجية الخاصة بك.

التسجيل وإعداد التقارير

أنت بحاجة إلى طريقة لتسجيل نتائج فحوصاتك الصحية. يعد التسجيل بمثابة أداة حيوية لالتقاط وحفظ السجل التاريخي للأحداث والأحداث مشاكل التصحيح في التعليمات البرمجية الخاصة بك. كما أنه يلعب دورا حاسما في تحليل الأداء.

استخدم مكتبة التسجيل المضمنة لإنشاء سجلاتك لهذا المشروع. يمكنك حفظ رسائل السجل في ملف اسمه system_monitor.log.

# Function to log messages
deflog_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
defprint_alert(message):
print(f"ALERT: {message}")

ستستخدم وظائف الفحص الصحي هذه الوظائف لتسجيل النتائج ذات الصلة والإبلاغ عنها.

إنشاء وظائف التحقق من الصحة

بالنسبة لكل فحص سلامة، حدد وظيفة ستتضمن اختبارًا محددًا يقيم جانبًا مهمًا من البنية الأساسية لديك.

مراقبة استخدام وحدة المعالجة المركزية

ابدأ بتحديد الوظيفة التي ستراقب استخدام وحدة المعالجة المركزية. وسيكون هذا بمثابة مؤشر حاسم للأداء العام للنظام واستخدام الموارد. يؤدي الاستخدام المفرط لوحدة المعالجة المركزية إلى تباطؤ النظام وعدم الاستجابة وحتى الأعطال، مما يؤدي إلى تعطيل الخدمات الأساسية بشدة.

من خلال التحقق بانتظام من استخدام وحدة المعالجة المركزية وتعيين الحدود المناسبة، يمكن لمسؤولي النظام تحديد اختناقات الأداء أو العمليات كثيفة الاستخدام للموارد أو مشكلات الأجهزة المحتملة.

# Health check functions
defcheck_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)

تتحقق الوظيفة من استخدام وحدة المعالجة المركزية الحالية للنظام. إذا تجاوز استخدام وحدة المعالجة المركزية الحد الأقصى بالنسبة المئوية، فسيتم تسجيل رسالة تشير إلى الاستخدام العالي لوحدة المعالجة المركزية وطباعة رسالة تنبيه.

مراقبة استخدام الذاكرة

حدد وظيفة أخرى تراقب استخدام الذاكرة. من خلال تتبع استخدام الذاكرة بانتظام، يمكنك ذلك كشف تسرب الذاكرةوالعمليات المتعطشة للموارد والاختناقات المحتملة. تمنع هذه الطريقة تباطؤ النظام وتعطله وانقطاعه.

defcheck_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)

كما هو الحال مع فحص استخدام وحدة المعالجة المركزية، يمكنك تعيين حد لاستخدام الذاكرة العالية. إذا تجاوز استخدام الذاكرة الحد، فسيتم تسجيل وطباعة تنبيه.

مراقبة مساحة القرص

حدد الوظيفة التي ستراقب مساحة القرص. من خلال المراقبة المستمرة لتوفر مساحة القرص، يمكنك معالجة المشكلات المحتملة الناجمة عن استنفاد الموارد. يمكن أن يؤدي نفاد مساحة القرص إلى تعطل النظام وتلف البيانات وانقطاع الخدمة. تساعد عمليات فحص مساحة القرص على التأكد من وجود سعة تخزين كافية.

defcheck_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)

تقوم هذه الوظيفة بفحص استخدام مساحة القرص لمسار محدد. المسار الافتراضي هو الدليل الجذر /. إذا كانت مساحة القرص أقل من الحد الأدنى، فإنه يقوم بتسجيل وطباعة تنبيه.

مراقبة حركة مرور الشبكة

حدد الوظيفة النهائية التي ستراقب تدفق بيانات نظامك. وسوف يساعد في الكشف المبكر عن الارتفاعات غير المتوقعة في حركة مرور الشبكة، والتي قد تكون مؤشرا على انتهاكات أمنية أو مشاكل في البنية التحتية.

defcheck_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
defrun_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
whileTrue:
schedule.run_pending()
time.sleep(1)

تتحقق هذه الحلقة باستمرار من المهام المجدولة وتنفذها عندما يحين وقتها. عند تشغيل البرنامج يكون الناتج كما يلي:

يقوم البرنامج بتسجيل سجلات المراقبة على system_monitor.log ملف ويعرض تنبيه على المحطة.

تطوير برنامج مراقبة النظام

فحوصات المراقبة هذه ليست الوحيدة التي يدعمها psutil. يمكنك إضافة المزيد من وظائف المراقبة، باستخدام أسلوب مماثل، لتناسب متطلباتك.

يمكنك أيضًا تحسين وظيفة إعداد التقارير لاستخدام البريد الإلكتروني بدلاً من إخراج رسالة بسيطة على وحدة التحكم.