مراقبة تخزين IBM Storwize باستخدام Zabbix

في هذه المقالة ، سنتحدث قليلاً عن مراقبة أنظمة تخزين IBM Storwize وأنظمة التخزين الأخرى التي تدعم بروتوكولات CIM / WBEM. لقد تم ترك الحاجة إلى مثل هذا الرصد من بين الأقواس ، وسنعتبرها بديهية. سوف نستخدم Zabbix كنظام مراقبة.

في أحدث إصدارات Zabbix ، بدأت الشركة في إيلاء المزيد من الاهتمام للقوالب - بدأت القوالب في الظهور لخدمات المراقبة ونظام إدارة قواعد البيانات وأجهزة الخوادم (IMM / iBMC) عبر IPMI. لا تزال مراقبة التخزين خارج الصندوق ، لذا لدمج المعلومات حول حالة وأداء مكونات التخزين في Zabbix ، تحتاج إلى استخدام قوالب مخصصة. أوجه انتباهكم إلى أحد هذه القوالب.

أولا قليلا من النظرية.

للوصول إلى حالة وإحصائيات تخزين IBM Storwize ، يمكنك استخدام:

  1. بروتوكولات CIM / WBEM ؛
  2. RESTful API (مدعوم من قبل IBM Storwize بدءًا من إصدار البرنامج 8.1.3) ؛
  3. اعتراضات SNMP (مجموعة محدودة من الفخاخ ، بدون إحصائيات) ؛
  4. اتصال SSH متبوعًا بجهاز تحكم عن بعد مناسبة لباش البرمجة النصية على مهل.

يمكن للمهتمين معرفة المزيد حول طرق المراقبة المختلفة في الأقسام ذات الصلة من وثائق البائع ، وكذلك في المستند IBM Spectrum Virtualize البرمجة النصية.

سنستخدم بروتوكولات CIM / WBEM ، والتي تسمح لنا بالحصول على معلمات نظام التخزين دون تغييرات كبيرة في البرامج لأنظمة التخزين المختلفة. تعمل بروتوكولات CIM / WBEM وفقًا لـ مواصفات مبادرة إدارة التخزين (SMI-S). مبادرة إدارة التخزين - المواصفات تستند إلى معايير مفتوحة CIM (نموذج المعلومات المشترك) и WBEM (إدارة المؤسسة القائمة على الويب)مُعرف فريق عمل الإدارة الموزعة.

يعمل WBEM فوق بروتوكول HTTP. من خلال WBEM ، لا يمكنك العمل فقط مع أنظمة التخزين ، ولكن أيضًا مع HBAs والمفاتيح ومكتبات الأشرطة.

وفق هندسة SMI и تحديد البنية التحتية، المكون الرئيسي لتنفيذ SMI هو خادم WBEM الذي يعالج طلبات CIM-XML من عملاء WBEM (في حالتنا ، من نصوص المراقبة):

مراقبة تخزين IBM Storwize باستخدام Zabbix

CIM هو نموذج موجه للكائنات يعتمد على لغة النمذجة الموحدة (UML).
يتم تعريف العناصر المدارة على أنها فئات CIM التي لها خصائص وطرق لتمثيل البيانات والوظائف المدارة.

وفق www.snia.org/pywbem، للوصول إلى التخزين عبر CIM / WBEM ، يمكنك استخدام PyWBEM ، وهي مكتبة مفتوحة المصدر مكتوبة بلغة Python توفر للمطورين ومسؤولي النظام تنفيذ بروتوكول CIM للوصول إلى كائنات CIM وتنفيذ عمليات مختلفة باستخدام خادم WBEM يعمل وفقًا لـ SMI -S أو مواصفات CIM الأخرى.

للاتصال بخادم WBEM ، استخدم مُنشئ الفئة WBEM الاتصال:

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 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)

للحصول على قيم معلمات نظام التخزين ، الطريقة تعداد الحالات () فئة 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)

لتحديد الفئات التي نحتاجها للحصول على معلمات كائنات التخزين ، نقرأ التوثيق ، على سبيل المثال كيف يتم ربط مفاهيم النظام بمفاهيم CIM.

لذلك ، للحصول على معلمات (وليس عدادات الأداء) للأقراص المادية (محركات الأقراص) ، سنقوم بالاستعلام عن فئة IBMTSSVC_DiskDrive للحصول على معلمات وحدات التخزين - فئة IBMTSSVC_StorageVolume ، للحصول على معلمات الصفيف - فئة IBMTSSVC_Array ، للحصول على معلمات MDisks - فئة IBMTSSVC_BackendVolume ، إلخ.

يمكنك أن تقرأ عن الأداء المخططات الوظيفية لعامل نموذج المعلومات المشترك (خاصة - كتلة الملف الفرعي لأداء الخادم) و IBM System Storage SAN Volume Controller و Storwize V7000 Best Practices and Performance Guidelines (مثال C-11 ، الصفحة 415).

للحصول على إحصائيات التخزين لوحدات التخزين ، تحتاج إلى تحديد IBMTSSVC_StorageVolumeStatistics كقيمة معلمة ClassName. يمكن العثور على خصائص فئة IBMTSSVC_StorageVolumeStatistics الضرورية لتجميع الإحصائيات في إحصائيات العقدة.

أيضًا ، لتحليل الأداء ، يمكنك استخدام الفئات IBMTSSVC_BackendVolumeStatistics و IBMTSSVC_DiskDriveStatistics و IBMTSSVC_NodeStatistics.

لكتابة البيانات إلى نظام المراقبة ، سنستخدم الآلية الفخاخ zabbix، تم تنفيذه في Python في وحدة نمطية py-zabbix. سيتم وضع بنية فئات التخزين وخصائصها في قاموس بتنسيق JSON.

نقوم بتحميل القالب إلى خادم Zabbix ، وتأكد من أن خادم المراقبة لديه حق الوصول إلى التخزين عبر بروتوكول WEB (TCP / 5989) ، ووضع ملفات التكوين والكشف عن البرامج النصية والمراقبة على خادم المراقبة. بعد ذلك ، أضف البرامج النصية إلى المجدول. نتيجة لذلك: نكتشف كائنات التخزين (المصفوفات والأقراص المادية والافتراضية والمرفقات وغير ذلك الكثير) ، ونمررها إلى اكتشافات Zabbix ، ونقرأ حالة معلماتها ، ونقرأ إحصائيات الأداء (عدادات الأداء) ، وننقل كل هذا إلى ما يقابلها عناصر Zabbix من نموذجنا.

يمكن أن يكون قالب Zabbix ونصوص Python وهيكل فئات التخزين وخصائصها ، بالإضافة إلى أمثلة على ملفات التكوين تجد هنا.

المصدر: www.habr.com

إضافة تعليق