Мониторинг на хранилището на 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 и след това дистанционно подходящ за спокоен bash скрипт.

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

Ще използваме протоколите CIM/WBEM, които ни позволяват да получим работните параметри на системата за съхранение без значителни промени в софтуера за различни системи за съхранение. Протоколите CIM/WBEM работят в съответствие с Спецификация на инициативата за управление на съхранение (SMI-S). Инициатива за управление на съхранение – Спецификацията се основава на отворени стандарти CIM (Общ информационен модел) и WBEM (Уеб базирано корпоративно управление), решен Работна група за разпределено управление.

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

Според SMI архитектураи Определете инфраструктурата, основният компонент на SMI имплементацията е WBEM сървърът, който обработва CIM-XML заявки от WBEM клиенти (в нашия случай от скриптове за мониторинг):

Мониторинг на хранилището на IBM Storwize със Zabbix

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

Според www.snia.org/pywbem, за достъп до системи за съхранение чрез CIM/WBEM, можете да използвате PyWBEM - библиотека с отворен код, написана на 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 и Storwize V7000 Най-добри практики и насоки за производителност (Пример C-8, страница 412), ние ще използваме „root/ibm“ като CIM пространство от имена за IBM Storwize система за съхранение.

Моля, обърнете внимание, че за да събирате статистически данни чрез протокола CIM-XML/WBEM, трябва да включите потребителя в съответната група за сигурност. В противен случай, когато изпълнявате WBEM заявки, изходът на атрибутите на екземпляр на клас ще бъде празен.

За достъп до статистика за съхранение, потребителят, под който се извиква конструкторът WBEMConnection(), трябва да има поне 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 Volume Controller и 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)

Методът се използва за получаване на стойностите на параметрите на системата за съхранение 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, за получаване на параметри на обеми - клас IBMTSSVC_StorageVolume, за получаване на параметри на масива - клас IBMTSSVC_Array, за получаване на параметри на MDisks - клас IBMTSSVC_BackendVolume и т.н.

За изпълнение можете да прочетете Функционални диаграми на агента на Common Information Model (по-специално - Подпрофил за производителност на блокиран сървър) и IBM System Storage SAN Volume Controller и Storwize V7000 Най-добри практики и насоки за производителност (Пример 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

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