Наблюдение на СХД 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 Traps (ограничен набор от trap'ове, без статистика);
  4. Свързване по SSH с последваща отдалечена подходяща за бавен bash-скриптинг.

Интересуващите се могат да се запознаят по-подробно с различните методи за наблюдение в съответните раздели на документацията на вендора, а също и в документа IBM Spectrum Virtualize scripting.

Ще използваме протоколите CIM/WBEM, които позволяват получаване на параметри за работа на СХД без значителни промени в софтуера за различни СХД. Протоколите CIM/WBEM работят в съответствие с Storage Management Initiative Specification (SMI-S). Storage Management Initiative – спецификацията е основана на отворени стандарти CIM (Common Information Model) и WBEM (Web-Based Enterprise Management), определяни от Distributed Management Task Force.

WBEM работи на основата на протокола HTTP. Чрез WBEM можете да работите не само с СХД, но и с HBA, комутатори и лентови библиотеки.

Според SMI Architecture и Determine Infrastructure, основният компонент на реализиране на SMI е WBEM-сервер, обработващ CIM-XML заявки от WBEM-клиенти (в нашия случай — от скриптове за наблюдение):

Наблюдение на СХД IBM Storwize с помощта на Zabbix

CIM — обектно-ориентирана модел, основан на Unified Modeling Language (UML).
Управляемите елементи се определят под формата на CIM-класове, които имат свойства и методи за представяне на управляеми данни и функции.

Според www.snia.org/pywbem, за достъп до СХД чрез CIM/WBEM може да се използва PyWBEM — open source библиотека, написана на Python, която осигурява на разработчиците и системните администратори имплементация на протокола CIM за достъп до CIM-обекти и извършване на различни операции с WBEM-сървър, работещ според SMI-S или други CIM-спецификации.

За свързване с WBEM-сървъра използваме конструктора на класа WBEMConnection:

conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
            namespace, no_verification=True)

Това е виртуално свързване, тъй като CIM-XML/WBEM работи над HTTP, действителното свързване се осъществява при извикване на методите на класа WBEMConnection. В съответствие с IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (Пример C-8, стр. 412), за CIM namespace на СХД IBM Storwize ще използваме „root/ibm“.

Обърнете внимание, че за събиране на статистика по протокола 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 and 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)

За да определим кои класове са ни необходими за получаване на параметрите на обектите на СХД, прочитаме документацията, например How system concepts map to CIM concepts.

Така, за да получим параметрите (не бройчетата за производителност) на физическите дискове (Disk Drives), ще запитваме Class IBMTSSVC_DiskDrive; за получаване на параметри на Volumes — Class IBMTSSVC_StorageVolume; за получаване на параметри на масиви — Class IBMTSSVC_Array; за получаване на параметри на MDisks — Class IBMTSSVC_BackendVolume и т.н.

За производителността може да се прочете Functional diagrams of the Common Information Model agent (конкретно — Block server performance subprofile) и IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (Example C-11, стр. 415).

За получаване на статистиката на СХД по Volumes, е необходимо като стойност на параметъра ClassName да посочим IBMTSSVC_StorageVolumeStatistics. Необходимите за събиране на статистика свойства на класа IBMTSSVC_StorageVolumeStatistics могат да се видят в Node Statistics.

Също така за анализ на производителността могат да се използват класовете IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

За запис на данни в системата за мониторинг ще използваме механизма zabbix traps, реализиран на python в модула py-zabbix. Структурата на класовете на СХД и техните свойства ще разположим в речник във формат JSON.

Качим шаблон на сървъра Zabbix, уверяваме се, че съществува достъп до СХД от сървъра за мониторинг по протокол WEB (TCP/5989), разполагаме конфигурационни файлове, скриптове за откриване и мониторинг на сървъра за мониторинг. След това добавяме в планировчика стартиране на скриптове. В резултат: откриваме обекти на СХД (массиви, физически и виртуални дискове, enclosures и много други), предаваме ги към откритията в Zabbix, считаме статуса на техните параметри, считаме статистика за производителността (performance counters) и предаваме всичко това на съответните Zabbix Items на нашия шаблон.

Шаблон Zabbix, python-скриптове, структура на класовете на СХД и техните свойства, както и примери за конфигурационни файлове, могат да бъдат намерени тук.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster