Monitorovanie SÚS IBM Storwize pomocou Zabbix

V tomto článku sa trochu porozprávame o monitorovaní SÚS IBM Storwize a ďalších SÚS, ktoré podporujú protokoly CIM/WBEM. Potreba takéhoto monitorovania bola ponechaná na okraji, budeme to považovať za axióm. Ako monitorovací systém budeme používať Zabbix.

V posledných verziách Zabbix sa spoločnosť začala oveľa viac zameriavať na šablóny – objavili sa šablóny na monitorovanie služieb, databáz, serverového hardvéru (IMM/iBMC) cez IPMI. Monitorovanie SÚS zatiaľ zostáva mimo šablón z krabice, preto na integráciu do Zabbix informácií o stave a výkonu komponentov SÚS potrebujeme použiť vlastné šablóny. Jednu z takých šablón vám predstavujem.

Najprv trochu teórie.

Na prístup k stavu a štatistikám SÚS IBM Storwize môžete použiť:

  1. Protokoly CIM/WBEM;
  2. RESTful API (v IBM Storwize je podporované od verzie softvéru 8.1.3);
  3. SNMP Traps (obmedzený súbor trap'ov, žiadna štatistika);
  4. Pripojenie cez SSH s následným vzdialeným je vhodné pre pomalé bash skripting.

Záujemcovia sa môžu podrobnejšie oboznámiť s rôznymi metódami monitorovania v príslušných sekciách dokumentácie výrobcu, ako aj v dokumente IBM Spectrum Virtualize scripting.

Budeme používať protokoly CIM/WBEM, ktoré umožňujú získať parametre fungovania SÚS bez významných zmien softvéru pre rôzne SÚS. Protokoly CIM/WBEM fungujú podľa Storage Management Initiative Specification (SMI-S). Storage Management Initiative – Špecifikácia je založená na otvorených štandardoch CIM (Common Information Model) a WBEM (Web-Based Enterprise Management), ktoré určujú Distributed Management Task Force.

WBEM funguje nad protokolom HTTP. Cez WBEM môžete pracovať nielen so SÚS, ale aj s HBA, prepínačmi a páskovými knižnicami.

Podľa SMI Architecture a Determine Infrastructure, hlavným komponentom realizácie SMI je WBEM server, ktorý spracováva CIM-XML požiadavky od WBEM klientov (v našom prípade – od monitorovacích skriptov):

Monitorovanie SÚS IBM Storwize pomocou Zabbix

CIM je objektovo-orientovaný model, založený na Unified Modeling Language (UML).
Riadené prvky sú definované vo forme CIM tried, ktoré majú vlastnosti a metódy na reprezentáciu riadených údajov a funkcií.

Podľa www.snia.org/pywbem, pre prístup k SŠD cez CIM/WBEM môžeme využiť PyWBEM — open source knižnicu napísanú v Pythone, ktorá poskytuje vývojárom a systémovým administrátorom implementáciu protokolu CIM na prístup k CIM-objektom a vykonávanie rôznych operácií s WBEM-serverom, fungujúcim podľa SMI-S alebo iných CIM-špecifikácií.

Na pripojenie k WBEM-serveru používame konštruktor triedy WBEMConnection:

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

Toto je virtuálne pripojenie, pretože CIM-XML/WBEM funguje na vrchu HTTP, skutočné pripojenie nastáva pri volaní metód pre inštanciu triedy WBEMConnection. Podľa IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (Príklad C-8, str. 412), ako CIM namespace pre SŠD IBM Storwize použijeme „root/ibm“.

Všimnite si, že na zhromažďovanie štatistiky prostredníctvom protokolu CIM-XML/WBEM, je potrebné zaradiť používateľa do príslušnej bezpečnostnej skupiny. V opačnom prípade pri vykonávaní WBEM-žiadostí budú výstupy atribútov inštancie triedy prázdne..

Na prístup k štatistikám SŠD musí používateľ, pod ktorým sa vykonáva volanie konštruktora WBEMConnection(), mať oprávnenia aspoň RestrictedAdmin (je dostupné pre code_level > 7.8.0) alebo Administrator (neodporúčam z bezpečnostných dôvodov).

Pripojte sa k SŠD cez SSH a pozrite sa na čísla skupín:

> 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    

Pridajte používateľa zabbix do požadovanej skupiny:

> chuser -usergrp 5 zabbix

Okrem toho, podľa IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (str. 415) je potrebné zapnúť zhromažďovanie štatistík na SŠD. Takže na zhromažďovanie štatistík každú minútu:

> startstats -interval 1 

Kontrolujeme:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Aby ste získali všetky existujúce triedy SŠD, je potrebné využiť metódu EnumerateClassNames().

Príklad:

classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
     print (classname)

Na získanie hodnôt parametrov SŠD je určená metóda EnumerateInstances() triedy WBEMConnection, ktorá vracia zoznam inštancií CIMInstance().

Príklad:

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

Pre niektoré triedy, ktoré obsahujú veľké množstvo exemplárov, ako je IBMTSSVC_StorageVolume, môže byť úplný dotaz na všetky exempláre pomerne pomalý. Môže generovať veľké objemy dát, ktoré musia byť spracované SÚS, prenesené cez sieť a spracované skriptom. Na tento účel existuje metóda ExecQuery(), ktorá umožňuje získať len nás zaujímajúce vlastnosti exemplára triedy. Táto metóda predpokladá použitie dotazovacieho jazyka podobného SQL — buď CIM Query Language (DMTF:CQL), alebo WBEM Query Language (WQL) na dotazovanie CIM-objektov SÚS:

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

Aby sme určili, aké triedy potrebujeme na získanie parametrov objektov SÚS, prečítať dokumentáciu, napríklad How system concepts map to CIM concepts.

Takže na získanie parametrov (nie výkonových čítačov) fyzických diskov (Disk Drives) budeme dotazovať triedu IBMTSSVC_DiskDrive, na získanie parametrov Volume — triedu IBMTSSVC_StorageVolume, na získanie parametrov polí — triedu IBMTSSVC_Array, na získanie parametrov MDisks — triedu IBMTSSVC_BackendVolume atď.

O výkonnosti si môžete prečítať Functional diagrams of the Common Information Model agent (konkrétne — Block server performance subprofile) a IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (príklad C-11, str. 415).

Aby sme získali štatistiky SÚS podľa Volume, je potrebné ako hodnotu parametra ClassName uviesť IBMTSSVC_StorageVolumeStatistics. Potrebné vlastnosti triedy IBMTSSVC_StorageVolumeStatistics na zber štatistiky si môžete pozrieť v Node Statistics.

Rovnako na analýzu výkonu môžete použiť triedy IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Na zápis dát do systému monitorovania budeme používať mechanizmus zabbix traps, implementovaný na pythone v module py-zabbix. Štruktúru tried SÚS a ich vlastností uložíme do slovníka vo formáte JSON.

Na server Zabbix nahrávame šablónu, uistíme sa, že zo servera monitorovania je prístup k úložisku podľa protokolu WEB (TCP/5989), umiestňujeme konfiguračné súbory, skripty na detekciu a monitoring na server monitorovania. Potom pridáme spúšťanie skriptov do plánovača. Výsledkom je, že objavujeme objekty úložiska (diskové polia, fyzické a virtuálne disky, skriňové systémy a mnoho ďalšieho), prenášame ich do Zabbix discoveries, čítame stav ich parametrov, čítame štatistiku výkonu (perfomance counters) a prenášame to všetko do príslušných Zabbix Items našej šablóny.

Šablónu Zabbix, python-skripty, štruktúru tried úložiska a ich vlastností, ako aj príklady konfiguračných súborov, je možné nájsť tu.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster