במאמר זה נדבר מעט על ניטור מערכות אחסון IBM Storwize ומערכות אחסון אחרות התומכות בפרוטוקולי CIM/WBEM. הצורך בניטור כזה נותר מחוץ למשוואה; אנו נתייחס לכך כאקסיומה. נשתמש ב-Zabix כמערכת ניטור.
בגרסאות האחרונות של Zabbix החלה החברה להקדיש הרבה יותר תשומת לב לתבניות - החלו להופיע תבניות לשירותי ניטור, DBMS, חומרת שרתים (IMM/iBMC) באמצעות IPMI. ניטור מערכת האחסון עדיין מחוץ לתבניות מחוץ לקופסה, כך שכדי לשלב מידע על המצב והביצועים של רכיבי אחסון ב- Zabbix, עליך להשתמש בתבניות מותאמות אישית. אני מביא לידיעתך אחת מהתבניות הללו.
ראשית, קצת תיאוריה.
כדי לגשת לסטטוס ולסטטיסטיקה של מערכות האחסון של IBM Storwize, תוכל להשתמש ב:
- פרוטוקולי CIM/WBEM;
- (נתמך ב-IBM Storwize החל מגירסת תוכנה 8.1.3);
- מלכודות SNMP (קבוצה מוגבלת של מלכודות, ללא סטטיסטיקה);
- התחבר באמצעות SSH ולאחר מכן מרחוק .
המעוניינים יכולים ללמוד עוד על שיטות ניטור שונות בחלקים הרלוונטיים בתיעוד הספק, וכן במסמך .
אנו נשתמש בפרוטוקולי CIM/WBEM, המאפשרים לנו לקבל פרמטרי הפעלה של מערכת האחסון ללא שינויים מהותיים בתוכנה עבור מערכות אחסון שונות. פרוטוקולי CIM/WBEM פועלים בהתאם . יוזמת ניהול אחסון - המפרט מבוסס על סטנדרטים פתוחים и , נחוש בדעתו .
WBEM פועל על גבי פרוטוקול HTTP. באמצעות WBEM אתה יכול לעבוד לא רק עם מערכות אחסון, אלא גם עם HBAs, מתגים וספריות קלטות.
על פי и , הרכיב העיקרי של יישום SMI הוא שרת WBEM, אשר מעבד בקשות CIM-XML מלקוחות WBEM (במקרה שלנו, מסקריפטי ניטור):

CIM הוא מודל מונחה עצמים המבוסס על Unified Modeling Language (UML).
אלמנטים מנוהלים מוגדרים כמחלקות CIM בעלות מאפיינים ושיטות לייצוג נתונים ופונקציונליות מנוהלים.
על פי , כדי לגשת למערכות אחסון באמצעות CIM/WBEM, ניתן להשתמש ב-PyWBEM - ספריית קוד פתוח שנכתבה ב-Python, המספקת למפתחים ומנהלי מערכות יישום של פרוטוקול CIM לגישה לאובייקטי CIM ולביצוע פעולות שונות עם שרת WBEM הפועל ב- בהתאם למפרטי SMI-S או CIM אחרים.
כדי להתחבר לשרת WBEM אנו משתמשים ב-class constructor :
conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
namespace, no_verification=True)
זהו חיבור וירטואלי, מכיוון ש-CIM-XML/WBEM פועל על גבי HTTP, החיבור האמיתי מתרחש כאשר מתודות נקראות על מופע של המחלקה WBEMConnection. בהתאם ל-IBM System Storage SAN Volume Controller ו-Storwize V7000 Best Practices and Performance Guidelines (דוגמה C-8, עמוד 412), נשתמש ב-"root/ibm" כמרחב השמות של CIM עבור מערכת האחסון של IBM Storwize.
שים לב שכדי לאסוף נתונים סטטיסטיים באמצעות פרוטוקול CIM-XML/WBEM, עליך לכלול את המשתמש בקבוצת האבטחה המתאימה. אחרת, בעת ביצוע שאילתות WBEM, הפלט של תכונות מופע המחלקה יהיה ריק.
כדי לגשת לסטטיסטיקות אחסון, המשתמש שתחתיו נקרא הבנאי , חייב להיות לפחות RestrictedAdmin (זמין עבור code_level > 7.8.0) או זכויות מנהל (לא מומלץ מסיבות אבטחה).
אנו מתחברים למערכת האחסון באמצעות SSH ומסתכלים על מספרי הקבוצה:
> lsusergrp
id name role remote
0 SecurityAdmin SecurityAdmin no
1 Administrator Administrator no
2 CopyOperator CopyOperator no
3 Service Service no
4 Monitor Monitor no
5 RestrictedAdmin RestrictedAdmin no
הוסף את משתמש zabbix לקבוצה הרצויה:
> chuser -usergrp 5 zabbix
בנוסף, בהתאם ל-IBM System Storage SAN Volume Controller ו- Storwize V7000 Best Practices and Performance Guidelines (עמ' 415), עליך לאפשר איסוף נתונים סטטיסטיים על מערכת האחסון. אז, כדי לאסוף נתונים סטטיסטיים בכל דקה:
> startstats -interval 1
אנו בודקים:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
כדי לקבל את כל מחלקות האחסון הקיימות, עליך להשתמש בשיטה EnumerateClassNames() .
לדוגמה:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
השיטה משמשת כדי לקבל את הערכים של פרמטרים של מערכת האחסון class WBEMConnection, מחזירה רשימה של מופעים .
לדוגמה:
instances = conn.EnumerateInstances(classname,
namespace=nd_parameters['name_space'])
for instance in instances:
for prop_name, prop_value in instance.items():
print(' %s: %r' % (prop_name, prop_value))
עבור מחלקות מסוימות המכילות מספר רב של מופעים, כגון IBMTSSVC_StorageVolume, שאילתה מלאה של כל המופעים יכולה להיות איטית למדי. זה יכול ליצור כמויות גדולות של נתונים שיש להכין על ידי מערכת האחסון, להעביר דרך הרשת ולעבד על ידי הסקריפט. יש שיטה למקרה כזה , מה שמאפשר לנו לקבל רק את המאפיינים של מופע מחלקה שמעניינים אותנו. שיטה זו כוללת שימוש בשפת שאילתה דמוית SQL, שפת שאילתות CIM (DMTF:CQL) או שפת שאילתות WBEM (WQL), כדי לבצע שאילתות על אובייקטי אחסון CIM:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
כדי לקבוע אילו מחלקות אנחנו צריכים כדי להשיג את הפרמטרים של אובייקטי אחסון, קרא את התיעוד, למשל .
לכן, כדי לקבל פרמטרים (לא מוני ביצועים) של דיסקים פיזיים (כונני דיסקים) נסקר את Class IBMTSSVC_DiskDrive, כדי לקבל פרמטרים של Volumes - Class IBMTSSVC_StorageVolume, כדי לקבל פרמטרים של מערך - Class IBMTSSVC_Array, כדי לקבל פרמטרים של MDisks - Class IBMTSSVume_BackendVol.
לביצועים תוכלו לקרוא (באופן ספציפי - ) ו-IBM System Storage SAN Controller ו- Storwize V7000 שיטות עבודה מומלצות והנחיות ביצועים (דוגמה C-11, עמוד 415).
כדי לקבל סטטיסטיקות אחסון עבור נפחים, עליך לציין IBMTSVC_StorageVolumeStatistics כערך של הפרמטר ClassName. ניתן לראות את המאפיינים של מחלקת IBMTSSVC_StorageVolumeStatistics הדרושים לאיסוף נתונים סטטיסטיים ב .
כמו כן, לניתוח ביצועים אתה יכול להשתמש במחלקות IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
כדי להקליט נתונים למערכת הניטור נשתמש במנגנון , מיושם ב-python במודול . נמקם את המבנה של מחלקות מערכות אחסון והמאפיינים שלהן במילון בפורמט JSON.
אנו מעלים את התבנית לשרת Zabbix, מוודאים שלשרת הניטור יש גישה למערכת האחסון באמצעות פרוטוקול WEB (TCP/5989), וממקמים קבצי קונפיגורציה, סקריפטים לאיתור וניטור על שרת הניטור. לאחר מכן, הוסף הפעלת סקריפט למתזמן. כתוצאה מכך: אנו מגלים אובייקטי אחסון (מערכים, דיסקים פיזיים ווירטואליים, מארזים ועוד), מעבירים אותם לתגליות Zabbix, קוראים את מצב הפרמטרים שלהם, קוראים סטטיסטיקות ביצועים (מוני ביצועים), מעבירים את כל זה ל-Zabix המקביל. פריטים מהתבנית שלנו.
תבנית Zabbix, סקריפטים python, מבנה מחלקות אחסון ומאפיינים, כמו גם דוגמאות של קבצי תצורה, אתה יכול .
מקור: www.habr.com
