ProHoster > בלוג > מינהל > ניטור מערכות אחסון IBM Storwize באמצעות Zabbix
ניטור מערכות אחסון IBM Storwize באמצעות Zabbix
במאמר זה נדבר מעט על ניטור מערכות אחסון IBM Storwize ומערכות אחסון אחרות התומכות בפרוטוקולי CIM/WBEM. הצורך בניטור כזה נותר מחוץ למשוואה; אנו נתייחס לכך כאקסיומה. נשתמש ב-Zabix כמערכת ניטור.
בגרסאות האחרונות של Zabbix החלה החברה להקדיש הרבה יותר תשומת לב לתבניות - החלו להופיע תבניות לשירותי ניטור, DBMS, חומרת שרתים (IMM/iBMC) באמצעות IPMI. ניטור מערכת האחסון עדיין מחוץ לתבניות מחוץ לקופסה, כך שכדי לשלב מידע על המצב והביצועים של רכיבי אחסון ב- Zabbix, עליך להשתמש בתבניות מותאמות אישית. אני מביא לידיעתך אחת מהתבניות הללו.
ראשית, קצת תיאוריה.
כדי לגשת לסטטוס ולסטטיסטיקה של מערכות האחסון של IBM Storwize, תוכל להשתמש ב:
פרוטוקולי CIM/WBEM;
ממשק API משוכלל (נתמך ב-IBM Storwize החל מגירסת תוכנה 8.1.3);
מלכודות SNMP (קבוצה מוגבלת של מלכודות, ללא סטטיסטיקה);
WBEM פועל על גבי פרוטוקול HTTP. באמצעות WBEM אתה יכול לעבוד לא רק עם מערכות אחסון, אלא גם עם HBAs, מתגים וספריות קלטות.
על פי אדריכלות SMI и לקבוע תשתית, המרכיב העיקרי ביישום SMI הוא שרת WBEM, המעבד בקשות CIM-XML מלקוחות WBEM (במקרה שלנו, מסקריפטים לניטור):
CIM הוא מודל מונחה עצמים המבוסס על Unified Modeling Language (UML).
אלמנטים מנוהלים מוגדרים כמחלקות CIM בעלות מאפיינים ושיטות לייצוג נתונים ופונקציונליות מנוהלים.
על פי www.snia.org/pywbem, כדי לגשת למערכות אחסון באמצעות CIM/WBEM, ניתן להשתמש ב-PyWBEM - ספריית קוד פתוח שנכתבה ב-Python, המספקת למפתחים ומנהלי מערכות יישום של פרוטוקול CIM לגישה לאובייקטי CIM ולביצוע פעולות שונות עם שרת WBEM הפועל ב- בהתאם למפרטי SMI-S או CIM אחרים.
כדי להתחבר לשרת WBEM אנו משתמשים ב-class constructor WBEMCconnection:
זהו חיבור וירטואלי, מכיוון ש-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, הפלט של תכונות מופע המחלקה יהיה ריק.
כדי לגשת לסטטיסטיקות אחסון, המשתמש שתחתיו נקרא הבנאי WBEMConnection(), חייב להיות לפחות 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)
השיטה משמשת כדי לקבל את הערכים של פרמטרים של מערכת האחסון EnumerateInstances() class WBEMConnection, מחזירה רשימה של מופעים CIMInstance().
לדוגמה:
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, שאילתה מלאה של כל המופעים יכולה להיות איטית למדי. זה יכול ליצור כמויות גדולות של נתונים שיש להכין על ידי מערכת האחסון, להעביר דרך הרשת ולעבד על ידי הסקריפט. יש שיטה למקרה כזה ExecQuery(), מה שמאפשר לנו לקבל רק את המאפיינים של מופע מחלקה שמעניינים אותנו. שיטה זו כוללת שימוש בשפת שאילתה דמוית 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.
כדי לקבל סטטיסטיקות אחסון עבור נפחים, עליך לציין IBMTSVC_StorageVolumeStatistics כערך של הפרמטר ClassName. ניתן לראות את המאפיינים של מחלקת IBMTSSVC_StorageVolumeStatistics הדרושים לאיסוף נתונים סטטיסטיים ב סטטיסטיקה של צומת.
כמו כן, לניתוח ביצועים אתה יכול להשתמש במחלקות IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
כדי להקליט נתונים למערכת הניטור נשתמש במנגנון מלכודות זביקס, מיושם ב-python במודול py-zabbix. נמקם את המבנה של מחלקות מערכות אחסון והמאפיינים שלהן במילון בפורמט JSON.
אנו מעלים את התבנית לשרת Zabbix, מוודאים שלשרת הניטור יש גישה למערכת האחסון באמצעות פרוטוקול WEB (TCP/5989), וממקמים קבצי קונפיגורציה, סקריפטים לאיתור וניטור על שרת הניטור. לאחר מכן, הוסף הפעלת סקריפט למתזמן. כתוצאה מכך: אנו מגלים אובייקטי אחסון (מערכים, דיסקים פיזיים ווירטואליים, מארזים ועוד), מעבירים אותם לתגליות Zabbix, קוראים את מצב הפרמטרים שלהם, קוראים סטטיסטיקות ביצועים (מוני ביצועים), מעבירים את כל זה ל-Zabix המקביל. פריטים מהתבנית שלנו.
תבנית Zabbix, סקריפטים python, מבנה מחלקות אחסון ומאפיינים, כמו גם דוגמאות של קבצי תצורה, אתה יכול למצוא כאן.