نظارت بر فضای ذخیره سازی IBM Storwize با Zabbix

در این مقاله ما کمی در مورد نظارت بر سیستم های ذخیره سازی IBM Storwize و سایر سیستم های ذخیره سازی که از پروتکل های CIM/WBEM پشتیبانی می کنند صحبت خواهیم کرد. نیاز به چنین نظارتی از معادله حذف شده است؛ ما این را یک بدیهیات در نظر خواهیم گرفت. ما از Zabbix به عنوان یک سیستم نظارتی استفاده خواهیم کرد.

در آخرین نسخه های Zabbix، شرکت شروع به توجه بسیار بیشتری به قالب ها کرد - قالب ها برای نظارت بر خدمات، DBMS، سخت افزار سرور (IMM/iBMC) از طریق IPMI ظاهر شدند. نظارت بر سیستم ذخیره‌سازی هنوز خارج از قالب است، بنابراین برای ادغام اطلاعات مربوط به وضعیت و عملکرد اجزای ذخیره‌سازی در Zabbix، باید از قالب‌های سفارشی استفاده کنید. من یکی از این قالب ها را مورد توجه شما قرار می دهم.

اول، یک نظریه کوچک.

برای دسترسی به وضعیت و آمار سیستم های ذخیره سازی IBM Storwize می توانید از موارد زیر استفاده کنید:

  1. پروتکل های CIM/WBEM؛
  2. API RESTful (در IBM Storwize با نسخه نرم افزار 8.1.3 پشتیبانی می شود).
  3. تله های SNMP (مجموعه محدودی از تله ها، بدون آمار).
  4. از طریق SSH و سپس از راه دور متصل شوید مناسب برای اسکریپت نویسی آرام.

علاقه مندان می توانند در مورد روش های مختلف نظارت در بخش های مربوطه اسناد فروشنده و همچنین در سند اطلاعات بیشتری کسب کنند. IBM Spectrum Virtualize scripting.

ما از پروتکل های CIM/WBEM استفاده خواهیم کرد که به ما امکان می دهد پارامترهای عملیاتی سیستم ذخیره سازی را بدون تغییرات نرم افزاری قابل توجه برای سیستم های ذخیره سازی مختلف بدست آوریم. پروتکل های CIM/WBEM مطابق با مشخصات ابتکاری مدیریت ذخیره سازی (SMI-S). ابتکار مدیریت ذخیره سازی - مشخصات بر اساس استانداردهای باز است CIM (مدل اطلاعات مشترک) и WBEM (مدیریت سازمانی مبتنی بر وب)، مشخص کارگروه مدیریت توزیع شده.

WBEM در بالای پروتکل HTTP اجرا می شود. از طریق WBEM شما می توانید نه تنها با سیستم های ذخیره سازی، بلکه با HBA ها، سوئیچ ها و کتابخانه های نوار نیز کار کنید.

طبق معماری SMI и زیرساخت را تعیین کنید، مؤلفه اصلی اجرای SMI سرور WBEM است که درخواست های CIM-XML از مشتریان WBEM (در مورد ما از اسکریپت های نظارتی) را پردازش می کند:

نظارت بر فضای ذخیره سازی IBM Storwize با Zabbix

CIM یک مدل شی گرا بر اساس زبان مدلسازی یکپارچه (UML) است.
عناصر مدیریت شده به عنوان کلاس های CIM تعریف می شوند که دارای ویژگی ها و روش هایی برای نمایش داده های مدیریت شده و عملکرد هستند.

طبق www.snia.org/pywbemبرای دسترسی به سیستم‌های ذخیره‌سازی از طریق CIM/WBEM، می‌توانید از PyWBEM استفاده کنید - یک کتابخانه منبع باز نوشته شده در پایتون، که به توسعه‌دهندگان و مدیران سیستم، اجرای پروتکل CIM برای دسترسی به اشیاء CIM و انجام عملیات‌های مختلف با سرور WBEM که در آن کار می‌کند، ارائه می‌کند. مطابق با SMI-S یا سایر مشخصات CIM.

برای اتصال به سرور WBEM از سازنده کلاس استفاده می کنیم اتصال WBEMC:

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، خروجی ویژگی های نمونه کلاس خالی خواهد بود..

برای دسترسی به آمار ذخیره سازی، کاربری که سازنده تحت آن فراخوانی می شود WBEMConnection()، باید حداقل دارای RestrictedAdmin (در دسترس برای code_level > 7.8.0) یا حقوق Administrator (به دلایل امنیتی توصیه نمی شود).

ما از طریق 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() کلاس 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 Query Language (DMTF:CQL) یا WBEM Query Language (WQL)، برای پرس و جو از اشیاء ذخیره سازی CIM است:

request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)

برای تعیین اینکه کدام کلاس ها باید پارامترهای اشیاء ذخیره سازی را بدست آوریم، به عنوان مثال اسناد را بخوانید چگونه مفاهیم سیستم به مفاهیم CIM نگاشت می شوند.

بنابراین، برای به دست آوردن پارامترها (نه شمارنده های عملکرد) دیسک های فیزیکی (درایوهای دیسک) کلاس IBMTSSVC_DiskDrive را نظرسنجی می کنیم، برای به دست آوردن پارامترهای Volumes - کلاس IBMTSSVC_StorageVolume، برای به دست آوردن پارامترهای آرایه - کلاس IBMTSSVC_Array، برای به دست آوردن -MDisksVCVC-Array، MDisksVCVMTV و غیره.

برای اجرا می توانید بخوانید نمودارهای عملکردی عامل مدل اطلاعات مشترک (به طور مشخص - زیر نمایه عملکرد سرور را مسدود کنید) و IBM System Storage SAN Volume Controller و Storwize V7000 Best Practices and Performance Guidelines (مثال C-11، صفحه 415).

برای به دست آوردن آمار ذخیره سازی برای Volumes، باید IBMTSSVC_StorageVolumeStatistics را به عنوان مقدار پارامتر ClassName مشخص کنید. ویژگی های کلاس IBMTSSVC_StorageVolumeStatistics لازم برای جمع آوری آمار را می توان در آمار گره.

همچنین برای تحلیل عملکرد می توانید از کلاس های IBMTSSVC_BackendVolumeStatistics، IBMTSSVC_DiskDriveStatistics، IBMTSSVC_NodeStatistics استفاده کنید.

برای ثبت داده ها در سیستم مانیتورینگ از مکانیزم استفاده خواهیم کرد تله های zabbix، در پایتون در یک ماژول پیاده سازی شده است py-zabbix. ما ساختار کلاس های سیستم های ذخیره سازی و ویژگی های آنها را در یک دیکشنری با فرمت JSON قرار می دهیم.

ما قالب را در سرور Zabbix آپلود می کنیم، مطمئن می شویم که سرور مانیتورینگ از طریق پروتکل WEB (TCP/5989) به سیستم ذخیره سازی دسترسی دارد، فایل های پیکربندی، اسکریپت های شناسایی و نظارت را روی سرور مانیتورینگ قرار می دهیم. سپس راه اندازی اسکریپت را به زمانبندی اضافه کنید. در نتیجه: ما اشیاء ذخیره سازی (آرایه ها، دیسک های فیزیکی و مجازی، محفظه ها و موارد دیگر) را کشف می کنیم، آنها را به اکتشافات Zabbix منتقل می کنیم، وضعیت پارامترهای آنها را می خوانیم، آمار عملکرد را می خوانیم (شمارگرهای عملکرد)، همه اینها را به Zabbix مربوطه منتقل می کنیم. آیتم های قالب ما

قالب Zabbix، اسکریپت های پایتون، ساختار کلاس های ذخیره سازی و ویژگی های آنها و همچنین نمونه هایی از فایل های پیکربندی، می توانید اینجا پیدا کنید.

منبع: www.habr.com

اضافه کردن نظر