עם ספרייה בודדת אחת, אתה יכול לפקח על שורה של מדדי מערכת ולהבטיח שהכל פועל בצורה חלקה.
רוב הארגונים מסתמכים במידה רבה על תשתית ה-IT שלהם כדי לנהל את הפעילות שלהם. כשלים במערכת לא מתוכננים או פגיעה בביצועים עלולים להוביל לשיבושים, הפסדים כספיים ופגיעה במוניטין.
בדיקות תקינות אוטומטיות של המערכת הן חיוניות כדי להבטיח שתשתית ה-IT תישאר יציבה ואמינה. על ידי ניטור מדדים קריטיים וזיהוי מיידי של חריגות, אתה יכול למזער את זמן ההשבתה.
הגדרת בדיקות בריאות
חיוני להגדיר אילו בדיקות בריאות ברצונך לבצע במערכת שלך. עליך לקבוע קריטריונים ברורים למה אתה תפקח ולמה. התחל בזיהוי המטרות העיקריות של המערכת שלך. אילו פונקציות או שירותים הוא מספק?
לאחר מכן, הגדר מדדי ביצועים המבוססים על נתונים היסטוריים והבטח שבדיקות הבריאות שלך מעריכות את השימוש היעיל במשאבי המערכת. לבסוף, הגדירו את הספים המעידים על בעיה. איזה אחוז מהשימוש במשאבים אתה מחשיב גבוה או נמוך? באיזה שלב המערכת צריכה להפעיל התראה?
בחירת ספריות והגדרת הסביבה שלך
כדי להפוך את תהליך ניטור המערכת לאוטומטי ב- Python, תזדקק לספריות הבאות כדי לעזור לך לאסוף מדדי מערכת ולאחר מכן לתזמן את הבדיקות.
- psutil: זוהי ספריה חוצת פלטפורמות המספקת ממשק לאחזור מידע על ניצול המערכת (מעבד, זיכרון, דיסקים, רשת, חיישנים).
- לוח זמנים: ספריה זו מספקת דרך פשוטה לתזמן משימות להפעלה במרווחי זמן ספציפיים.
- זְמַן: ספריית Python מובנית שתשתמש בה לפעולות הקשורות לזמן.
- רישום: ספריה מובנית נוספת שבה תשתמש ליצירת יומנים של בדיקות תקינות המערכת.
התחל להגדיר דברים עד יצירת סביבה וירטואלית חדשה של Python. זה ימנע התנגשויות פוטנציאליות של ספריית גרסאות. לאחר מכן הפעל את פקודת הטרמינל הבאה אל התקן את הספריות הנדרשות עם Pip:
pip install psutil schedule
ברגע שהספריות מותקנות במערכת שלך, הסביבה שלך מוכנה.
קוד המקור המלא זמין ב-a מאגר GitHub.
ייבוא הספריות הנדרשות
צור סקריפט חדש, monitoring.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 תומך. אתה יכול להוסיף עוד פונקציות ניטור, תוך שימוש בגישה דומה, כדי להתאים לדרישות שלך.
אתה יכול גם לשפר את פונקציית הדיווח כדי להשתמש בדוא"ל במקום להוציא הודעה פשוטה במסוף.