מערכת Nagios בעולם ה Big Data – ניטור בדרך להצלחה

מאת: שירלי לברון קורן, Senior Database and System Consultant, Performit

בעולם של היום, אנו נדרשים להתמודד עם כמויות מידע עצומות, המגיע מאין ספור מקורות שונים. את המידע עלינו לעבד ולנתח בזמן אמת בכדי להוביל תהליך נכון של הסקת מסקנות וקבלת החלטות ראויות ברמה האירגונית.

עולם ה- Big Data המתייחס להתמודדות היום יומית עם כמויות המידע העצומות, נמצא בצבירת תאוצה מתמדת וארגונים רבים מבינים כי עליהם לשים דגש על הנושא כדי להישאר רלוונטיים בזירת העסקים התחרותית.

במאמר זה נסקור את יכולת האינטגרציה של מערכת הניטור Nagios בעולם ה-Big Data. נלמד מהי המערכת, מה יתרונותיה וכמובן כיצד היא יכולה לסייע לנו להמשיך ולצעוד קדימה.

מערכת Nagios – ניטור בדרך להצלחה

רגע לפני שנתעמק במערכת, חשוב שנתעכב על חשיבותו של הליך ניטור יציבותו של מסד הנתונים הארגוני.

ניטור תנועת מסד הנתונים הארגוני יאפשר לנו לאבחן תקלות ועומסים שונים הנוגעים לבסיס הנתונים בתחילת דרכם ואפילו עוד לפני שישפיעו על תגובת השרת. דרך פעולה זו מקנה לנו את היכולת לנהל את בסיס הנתונים ביציבות מרבית, ולהימנע ממצבי קריסה של השרת.

בדיוק כאן, נכנסת לפעולה מערכת הניטור Nagios. לאילו מכם שאינם מכירים את המערכת, נציין כי מדובר במערכת ניטור עוצמתית בקוד פתוח, המספקת פתרון אמין ויעיל לניטור תשתיות, תוכנות ומסדי נתונים בעלי חשיבות גבוהה המתמודדים עם כמויות מידע גדולות במיוחד.

למערכת הניטור של Nagios יכולות הרחבה שונות המאפשרות למנהליו של בסיס הנתונים לכתוב פעולות ניתור בשפות שונות כמו php,python ו – Bash.

אינטגרציה מול שרתי Big Data

כדי להמחיש את יכולת הניטור של מערכת Nagios, אציג בפניכם את יכולות האינטגרציה שלה אל מול שרת מסוג MongoDB, שרת מסד נתונים בקוד פתוח שהופך לפופולרי יותר ויותר בשנים האחרונות.

את פקודות הניטור כתבתי באמצעות תוסף הרחבה למערכת המאפשר כתיבת פקודות בשפת Python ו – PyMongo.

בחירת התחברות

במערכת הניטור נוכל להגדיר התחברות לכל אחד מה- Hosts בקבוצת שרתי MongoDB בפורט ברירת המחדל 27017, או בכל פורט אחר שנרצה.

בפקודת הניטור נגדיר כי תשלח אלינו אזהרה במידה וההתחברות לשרת נכשלה, לאחר שתי שניות. אזהרת שגיאה קריטית תשלח במידה וההתחברות נכשלה, לאחר ארבע שניות.

בדיקת אחוז החיבורים הפתוחים

בדיקה זו תגדיר למערכת הניטור לבצע בדיקה לכמות החיבורים הפתוחים בשרתי Mongo DB. על ידי ביצוע בדיקת ניטור זו נוכל לזהות בעיות שונות בתהליכי הגיבוי כמו גם חיבורים פתוחים בעקבות השימוש במנגנון ה- Connection Pool.

בפקודת הניטור נגדיר כי תשלח אלינו אזהרה במידה וכמות החיבורים הפתוחים עומדת מעל ל-70 אחוזים, אזהרת שגיאה קריטית תשלח במידה וכמות החיבורים הפתוחים עולה על 80 אחוזים.

מדידת הפערים ברפליקציה בשניות או באחוזים

בדיקה זו מאפשרת לזהות פער בסנכרון בין שרתי ה-MongoDB ולמדוד אותו מבחינת אחוזי הסנכרון או משך הסנכרון בשניות.

במקרה זה נוכל להגדיר כי תשלח אלינו אזהרה כאשר הפער עומד על יותר מ- 15 שניות והודעה קריטית כאשר הפער עומד על יותר משלושים שניות.

כמו כן, קיימת אפשרות ניטור של בעיות הסינכרון בין שרתים באחוזים. באפשרות זו נוכל להגדיר כי תשלח אלינו התראה כאשר הפער עומד על 50 אחוזים או הודעה קריטית כאשר הפער עומד על יותר מ-75 אחוזים.

במידה ופער הסנכרון עומד על 100 אחוזים יהיה עלינו לבצע סנכרון מלא ומחודש בין השרתים.

ניטור אחוזי נעילות

בדיקה זו מאפשרת לנטר נעילות בשרתי MongoDB. אחוזי נעילות גבוהים בשרת, מצביעים על כך שהשרת נמצא בעומס יתר או על כך שקיימת בעיה אפליקטיבית - מצב אשר עלול להוביל לקריסת המערכת.

בביצוע בדיקה לניטור אחוזי הנעילות נוכל להגדיר כי תשלח אלינו התראה ברגע שבו אחוזי הנעילות עומדים על 5 אחוזים והתראה קריטית ברגע שבו אחוזי הנעילות עומדים על 10 אחוזים.

ניטור ממוצע Flush Time

באמצעות הניטור של Flush Time נוכל למדוד את יעילות כתיבת הנתונים השוכנים בזיכרון המטמון לדיסק הקשיח. נתון זה הוא בעל חשיבות רבה במיוחד, שכן מדדים גבוהים עלולים להצביע על עומס יתר על מערכת האחסון ו/או על פעילות חריגה בשרת.

נוכל להגדיר כי בעת זמן תגובה ממוצע של 100ms תשלח אלינו התראה ואילו כאשר הזמן הממוצע יעמוד על 200ms תשלח אלינו הודעה קריטית.

כמו כן, נוכל לבדוק את זמן התגובה האחרון בכל פעם ולקבל התראה כאשר נתון זה עומד על 200ms או התראה קריטית כאשר זמן התגובה הוא 400ms.

בדיקת סטאטוס של Replica set

בעת ניטור מצב ה- Replica set (עותקי הרפליקציה) בשרתי MongoDB נוכל לבחור כי תשלח אלינו התראה בהתאם למצבים הבאים:

  • 0 – startup
  • 3 –recovering
  • 5 – startup2

כמו כן, נוכל להגדיר כי תשלח אלינו התראה קריטית במצבים:

  • 4 – fatal
  • 6 – Unknown
  • 8 – Down

בדיקת סטאטוס של Replica set בשרת הראשי

מלבד יכולת הניטור של שרתי MongoDB עצמם, נוכל לבצע בדיקת סטאטוס של Replica Set גם בשרת הראשי ולזהות כשלים שונים במהלך רפליקציה ועל ידי כך למנוע תקלות שונות במסד הנתונים.

בדיקת גודלו של מסד הנתונים

ניטור זה מאפשר לנו ללעקוב אחרי הגידול של מסד הנתונים ולהיערך מבחינת שטחי דיסק. ניטור זה עשוי לסייע בתכנון ה-sizing של המערכת.

בדיקת גודל ה-Index וכמות ה-Collections במסד הנתונים

ניטור ומעקב אחר גודל האינדקסים והאוספים במסד הנתונים, עשוי להצביע על צורך מיידי בדחיסת הנתונים ולזהות זליגות זיכרון או בעיות אפליקטיביות.

ניטור כמות השליפות בשנייה מתוך מסד הנתונים.

ניטור זה מאפשר לרדת לרזולוציה של קריאות וכתיבות למסד הנתונים ועשוי לסייע בבחינת הביצועים של השרת.

לסיכום - נקודה למחשבה

אמנם לא ניתן לסקור את כל היכולות ואפשרויות הניטור במערכת Nagios במאמר קצר, אך ברור לנו כי מערכת ניטור איכותית מהווה חלק קריטי במערך התפעול. זיהוי בעיה או מגמה שלילית הינן חלק מהמתודולוגיה הייחודית של Performit בניהול ביצועים פרואקטיבי. מערך ניטור יעיל עשוי למנוע את המשבר הבא גם בעולם ה-Big Data המתפתח בקצב מסחרר. בעיות ביצועים משפיעות על זמינות מערכות ופוגעות ב-SLA מול לקוחות/ספקים. במונחים כספיים, אי זמינות מערכת עלול להוביל לחוסר יכולת במתן מענה ללקוחות ובמקרי קיצון אף לקריסת עסקים של הארגון.