في هذه المقالة ، سنتحدث قليلاً عن مراقبة أنظمة تخزين IBM Storwize وأنظمة التخزين الأخرى التي تدعم بروتوكولات CIM / WBEM. لقد تم ترك الحاجة إلى مثل هذا الرصد من بين الأقواس ، وسنعتبرها بديهية. سوف نستخدم Zabbix كنظام مراقبة.
في أحدث إصدارات Zabbix ، بدأت الشركة في إيلاء المزيد من الاهتمام للقوالب - بدأت القوالب في الظهور لخدمات المراقبة ونظام إدارة قواعد البيانات وأجهزة الخوادم (IMM / iBMC) عبر IPMI. لا تزال مراقبة التخزين خارج الصندوق ، لذا لدمج المعلومات حول حالة وأداء مكونات التخزين في Zabbix ، تحتاج إلى استخدام قوالب مخصصة. أوجه انتباهكم إلى أحد هذه القوالب.
أولا قليلا من النظرية.
للوصول إلى حالة وإحصائيات تخزين IBM Storwize ، يمكنك استخدام:
بروتوكولات CIM / WBEM ؛
RESTful API (مدعوم من قبل IBM Storwize بدءًا من إصدار البرنامج 8.1.3) ؛
اعتراضات SNMP (مجموعة محدودة من الفخاخ ، بدون إحصائيات) ؛
يعمل WBEM فوق بروتوكول HTTP. من خلال WBEM ، لا يمكنك العمل فقط مع أنظمة التخزين ، ولكن أيضًا مع HBAs والمفاتيح ومكتبات الأشرطة.
وفق هندسة SMI и تحديد البنية التحتية، المكون الرئيسي لتنفيذ SMI هو خادم WBEM الذي يعالج طلبات CIM-XML من عملاء WBEM (في حالتنا ، من نصوص المراقبة):
CIM هو نموذج موجه للكائنات يعتمد على لغة النمذجة الموحدة (UML).
يتم تعريف العناصر المدارة على أنها فئات CIM التي لها خصائص وطرق لتمثيل البيانات والوظائف المدارة.
وفق www.snia.org/pywbem، للوصول إلى التخزين عبر CIM / WBEM ، يمكنك استخدام PyWBEM ، وهي مكتبة مفتوحة المصدر مكتوبة بلغة Python توفر للمطورين ومسؤولي النظام تنفيذ بروتوكول CIM للوصول إلى كائنات CIM وتنفيذ عمليات مختلفة باستخدام خادم WBEM يعمل وفقًا لـ SMI -S أو مواصفات CIM الأخرى.
للاتصال بخادم WBEM ، استخدم مُنشئ الفئة WBEM الاتصال:
هذا اتصال افتراضي ، لأن CIM-XML / WBEM يعمل عبر HTTP ، يحدث الاتصال الفعلي عندما يتم استدعاء الأساليب على مثيل لفئة WBEMConnection. وفقًا لـ IBM System Storage SAN Volume Controller و Storwize V7000 Best Practice وإرشادات الأداء (مثال C-8 ، ص 412) ، سوف نستخدم "root / ibm" كمساحة CIM لتخزين IBM Storwize.
يرجى ملاحظة أنه من أجل جمع الإحصائيات حول بروتوكول CIM-XML / WBEM ، يجب عليك تضمين المستخدم في مجموعة الأمان المناسبة. خلاف ذلك ، عند تنفيذ استعلامات 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 وأفضل ممارسات Storwize V7000 وإرشادات الأداء (ص 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)
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)
لذلك ، للحصول على معلمات (وليس عدادات الأداء) للأقراص المادية (محركات الأقراص) ، سنقوم بالاستعلام عن فئة IBMTSSVC_DiskDrive للحصول على معلمات وحدات التخزين - فئة IBMTSSVC_StorageVolume ، للحصول على معلمات الصفيف - فئة IBMTSSVC_Array ، للحصول على معلمات MDisks - فئة IBMTSSVC_BackendVolume ، إلخ.
للحصول على إحصائيات التخزين لوحدات التخزين ، تحتاج إلى تحديد IBMTSSVC_StorageVolumeStatistics كقيمة معلمة ClassName. يمكن العثور على خصائص فئة IBMTSSVC_StorageVolumeStatistics الضرورية لتجميع الإحصائيات في إحصائيات العقدة.
أيضًا ، لتحليل الأداء ، يمكنك استخدام الفئات IBMTSSVC_BackendVolumeStatistics و IBMTSSVC_DiskDriveStatistics و IBMTSSVC_NodeStatistics.
لكتابة البيانات إلى نظام المراقبة ، سنستخدم الآلية الفخاخ zabbix، تم تنفيذه في Python في وحدة نمطية py-zabbix. سيتم وضع بنية فئات التخزين وخصائصها في قاموس بتنسيق JSON.
نقوم بتحميل القالب إلى خادم Zabbix ، وتأكد من أن خادم المراقبة لديه حق الوصول إلى التخزين عبر بروتوكول WEB (TCP / 5989) ، ووضع ملفات التكوين والكشف عن البرامج النصية والمراقبة على خادم المراقبة. بعد ذلك ، أضف البرامج النصية إلى المجدول. نتيجة لذلك: نكتشف كائنات التخزين (المصفوفات والأقراص المادية والافتراضية والمرفقات وغير ذلك الكثير) ، ونمررها إلى اكتشافات Zabbix ، ونقرأ حالة معلماتها ، ونقرأ إحصائيات الأداء (عدادات الأداء) ، وننقل كل هذا إلى ما يقابلها عناصر Zabbix من نموذجنا.
يمكن أن يكون قالب Zabbix ونصوص Python وهيكل فئات التخزين وخصائصها ، بالإضافة إلى أمثلة على ملفات التكوين تجد هنا.