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ť:
- Protokoly CIM/WBEM;
- (v IBM Storwize je podporované od verzie softvéru 8.1.3);
- SNMP Traps (obmedzený súbor trap'ov, žiadna štatistika);
- Pripojenie cez SSH s následným vzdialeným .
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 .
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 – Špecifikácia je založená na otvorených štandardoch a , ktoré určujú .
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 a , 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):

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 , 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 :
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 , 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 triedy WBEMConnection, ktorá vracia zoznam inštancií .
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 , 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 .
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ť (konkrétne — ) 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 .
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 , implementovaný na pythone v module . Š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é .
Zdroj: habr.com
