در این مقاله ما کمی در مورد نظارت بر سیستم های ذخیره سازی IBM Storwize و سایر سیستم های ذخیره سازی که از پروتکل های CIM/WBEM پشتیبانی می کنند صحبت خواهیم کرد. نیاز به چنین نظارتی از معادله حذف شده است؛ ما این را یک بدیهیات در نظر خواهیم گرفت. ما از Zabbix به عنوان یک سیستم نظارتی استفاده خواهیم کرد.
در آخرین نسخه های Zabbix، شرکت شروع به توجه بسیار بیشتری به قالب ها کرد - قالب ها برای نظارت بر خدمات، DBMS، سخت افزار سرور (IMM/iBMC) از طریق IPMI ظاهر شدند. نظارت بر سیستم ذخیرهسازی هنوز خارج از قالب است، بنابراین برای ادغام اطلاعات مربوط به وضعیت و عملکرد اجزای ذخیرهسازی در Zabbix، باید از قالبهای سفارشی استفاده کنید. من یکی از این قالب ها را مورد توجه شما قرار می دهم.
اول، یک نظریه کوچک.
برای دسترسی به وضعیت و آمار سیستم های ذخیره سازی IBM Storwize می توانید از موارد زیر استفاده کنید:
پروتکل های CIM/WBEM؛
API RESTful (در IBM Storwize با نسخه نرم افزار 8.1.3 پشتیبانی می شود).
تله های SNMP (مجموعه محدودی از تله ها، بدون آمار).
علاقه مندان می توانند در مورد روش های مختلف نظارت در بخش های مربوطه اسناد فروشنده و همچنین در سند اطلاعات بیشتری کسب کنند. IBM Spectrum Virtualize scripting.
WBEM در بالای پروتکل HTTP اجرا می شود. از طریق WBEM شما می توانید نه تنها با سیستم های ذخیره سازی، بلکه با HBA ها، سوئیچ ها و کتابخانه های نوار نیز کار کنید.
طبق معماری SMI и زیرساخت را تعیین کنید، مؤلفه اصلی اجرای SMI سرور WBEM است که درخواست های CIM-XML از مشتریان WBEM (در مورد ما از اسکریپت های نظارتی) را پردازش می کند:
CIM یک مدل شی گرا بر اساس زبان مدلسازی یکپارچه (UML) است.
عناصر مدیریت شده به عنوان کلاس های CIM تعریف می شوند که دارای ویژگی ها و روش هایی برای نمایش داده های مدیریت شده و عملکرد هستند.
طبق www.snia.org/pywbemبرای دسترسی به سیستمهای ذخیرهسازی از طریق CIM/WBEM، میتوانید از PyWBEM استفاده کنید - یک کتابخانه منبع باز نوشته شده در پایتون، که به توسعهدهندگان و مدیران سیستم، اجرای پروتکل CIM برای دسترسی به اشیاء CIM و انجام عملیاتهای مختلف با سرور WBEM که در آن کار میکند، ارائه میکند. مطابق با SMI-S یا سایر مشخصات CIM.
برای اتصال به سرور WBEM از سازنده کلاس استفاده می کنیم اتصال WBEMC:
این یک اتصال مجازی است، از آنجایی که 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)
بنابراین، برای به دست آوردن پارامترها (نه شمارنده های عملکرد) دیسک های فیزیکی (درایوهای دیسک) کلاس IBMTSSVC_DiskDrive را نظرسنجی می کنیم، برای به دست آوردن پارامترهای Volumes - کلاس IBMTSSVC_StorageVolume، برای به دست آوردن پارامترهای آرایه - کلاس IBMTSSVC_Array، برای به دست آوردن -MDisksVCVC-Array، MDisksVCVMTV و غیره.
برای به دست آوردن آمار ذخیره سازی برای Volumes، باید IBMTSSVC_StorageVolumeStatistics را به عنوان مقدار پارامتر ClassName مشخص کنید. ویژگی های کلاس IBMTSSVC_StorageVolumeStatistics لازم برای جمع آوری آمار را می توان در آمار گره.
همچنین برای تحلیل عملکرد می توانید از کلاس های IBMTSSVC_BackendVolumeStatistics، IBMTSSVC_DiskDriveStatistics، IBMTSSVC_NodeStatistics استفاده کنید.
برای ثبت داده ها در سیستم مانیتورینگ از مکانیزم استفاده خواهیم کرد تله های zabbix، در پایتون در یک ماژول پیاده سازی شده است py-zabbix. ما ساختار کلاس های سیستم های ذخیره سازی و ویژگی های آنها را در یک دیکشنری با فرمت JSON قرار می دهیم.
ما قالب را در سرور Zabbix آپلود می کنیم، مطمئن می شویم که سرور مانیتورینگ از طریق پروتکل WEB (TCP/5989) به سیستم ذخیره سازی دسترسی دارد، فایل های پیکربندی، اسکریپت های شناسایی و نظارت را روی سرور مانیتورینگ قرار می دهیم. سپس راه اندازی اسکریپت را به زمانبندی اضافه کنید. در نتیجه: ما اشیاء ذخیره سازی (آرایه ها، دیسک های فیزیکی و مجازی، محفظه ها و موارد دیگر) را کشف می کنیم، آنها را به اکتشافات Zabbix منتقل می کنیم، وضعیت پارامترهای آنها را می خوانیم، آمار عملکرد را می خوانیم (شمارگرهای عملکرد)، همه اینها را به Zabbix مربوطه منتقل می کنیم. آیتم های قالب ما
قالب Zabbix، اسکریپت های پایتون، ساختار کلاس های ذخیره سازی و ویژگی های آنها و همچنین نمونه هایی از فایل های پیکربندی، می توانید اینجا پیدا کنید.