Monitorovanie úložiska IBM Storwize pomocou Zabbix

V tomto článku si povieme niečo o monitorovaní úložných systémov IBM Storwize a iných úložných systémov, ktoré podporujú protokoly CIM / WBEM. Potreba takéhoto sledovania je vynechaná zo zátvoriek, budeme to považovať za axiómu. Ako monitorovací systém použijeme Zabbix.

V najnovších verziách Zabbix začala spoločnosť venovať oveľa väčšiu pozornosť šablónam - začali sa objavovať šablóny pre monitorovacie služby, DBMS, hardvér serverov (IMM / iBMC) cez IPMI. Monitorovanie úložiska je stále mimo krabice, preto na integráciu informácií o stave a výkone komponentov úložiska do Zabbixu musíte použiť vlastné šablóny. Do pozornosti dávam jednu z týchto šablón.

Po prvé, malá teória.

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

  1. protokoly CIM/WBEM;
  2. RESTful API (podporuje IBM Storwize od verzie softvéru 8.1.3);
  3. SNMP Traps (obmedzený súbor pascí, žiadne štatistiky);
  4. SSH pripojenie, po ktorom nasleduje vzdialené vhodné pre pokojné bash skriptovanie.

Záujemcovia sa môžu dozvedieť viac o rôznych metódach monitorovania v príslušných častiach dokumentácie dodávateľa, ako aj v dokumente Skriptovanie IBM Spectrum Virtualize.

Využijeme protokoly CIM / WBEM, ktoré nám umožňujú získať parametre úložného systému bez výrazných zmien v softvéri pre rôzne úložné systémy. Protokoly CIM/WBEM fungujú podľa Špecifikácia iniciatívy správy úložiska (SMI-S). Iniciatíva správy úložiska – špecifikácia je založená na otvorených štandardoch CIM (Common Information Model) и WBEM (Web Based Enterprise Management)definované Pracovná skupina pre distribuovaný manažment.

WBEM funguje nad protokolom HTTP. Prostredníctvom WBEM môžete pracovať nielen s úložnými systémami, ale aj s HBA, prepínačmi a páskovými knižnicami.

Podľa Architektúra SMI и Určite infraštruktúru, hlavnou súčasťou implementácie SMI je server WBEM, ktorý spracováva požiadavky CIM-XML od klientov WBEM (v našom prípade z monitorovacích skriptov):

Monitorovanie úložiska IBM Storwize pomocou Zabbix

CIM je objektovo orientovaný model založený na UML (Unified Modeling Language).
Spravované položky sú definované ako triedy CIM, ktoré majú vlastnosti a metódy na reprezentáciu riadených údajov a funkcií.

Podľa www.snia.org/pywbem, na prístup k úložisku cez CIM / WBEM môžete použiť PyWBEM, open source knižnicu napísanú v Pythone, ktorá poskytuje vývojárom a správcom systému implementáciu protokolu CIM na prístup k objektom CIM a vykonávanie rôznych operácií so serverom WBEM pracujúcim podľa SMI -S alebo iné špecifikácie CIM.

Na pripojenie k serveru WBEM použite 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 beží cez HTTP, skutočné pripojenie nastáva, keď sú metódy volané na inštanciu triedy WBEMConnection. V súlade s IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (Príklad C-8, s. 412) použijeme „root/ibm“ ako CIM priestor názvov pre IBM Storwize storage.

Upozorňujeme, že ak chcete zbierať štatistiky o protokole CIM-XML/WBEM, musíte používateľa zaradiť do príslušnej bezpečnostnej skupiny. V opačnom prípade pri vykonávaní dotazov WBEM bude výstup atribútov inštancie triedy prázdny.

Na prístup k štatistikám úložiska má používateľ, pod ktorým sa volá konštruktor WBEMConnection(), musí mať aspoň RestrictedAdmin (dostupné pre code_level > 7.8.0) alebo Administrator (neodporúča sa z bezpečnostných dôvodov).

Pripojíme sa k úložnému systému cez SSH a pozrieme 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, v súlade s IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (s. 415), musíte povoliť zhromažďovanie štatistík v úložnom systéme. Ak chcete zbierať štatistiky každú minútu:

> startstats -interval 1 

skontrolujte:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Ak chcete získať všetky existujúce triedy úložiska, musíte použiť metódu EnumerateClassNames().

Príklad:

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

Ak chcete získať hodnoty parametrov úložného systému, metóda EnumerateInstances() Trieda WBEMConnection 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ý počet inštancií, ako napríklad IBMTSSVC_StorageVolume, môže byť úplný dotaz na všetky inštancie dosť pomalý. Dokáže generovať veľké množstvo dát, ktoré musí pripraviť úložný systém, preniesť cez sieť a spracovať skriptom. Pre takýto prípad existuje metóda ExecQuery(), ktorý vám umožňuje získať iba vlastnosti inštancie triedy, ktoré nás zaujímajú. Táto metóda zahŕňa použitie dotazovacieho jazyka podobného SQL, buď CIM Query Language (DMTF:CQL) alebo WBEM Query Language (WQL), na dopytovanie objektov úložiska CIM:

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

Na určenie, ktoré triedy potrebujeme získať parametre úložných objektov, si prečítame dokumentáciu napr Ako sa systémové koncepty mapujú na koncepty CIM.

Aby sme teda získali parametre (nie počítadlá výkonu) fyzických diskov (Disk Drive), požiadame o triedu IBMTSSVC_DiskDrive, aby sme získali parametre zväzkov - Trieda IBMTSSVC_StorageVolume, aby sme získali parametre poľa - Trieda IBMTSSVC_Array, aby sme získali parametre MDisk - Trieda IBMTSSVC_BackendVolume atď.

Môžete si prečítať o výkone Funkčné diagramy agenta Common Information Model (konkrétne - Blokovať podprofil výkonu servera) a IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (Príklad C-11, strana 415).

Ak chcete získať štatistiku úložného priestoru pre zväzky, musíte zadať IBMTSSVC_StorageVolumeStatistics ako hodnotu parametra ClassName. Vlastnosti triedy IBMTSSVC_StorageVolumeStatistics potrebné na zhromažďovanie štatistík nájdete v Štatistika uzlov.

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

Na zápis údajov do monitorovacieho systému použijeme mechanizmus pasce zabbix, implementovaný v pythone v module py-zabbix. Štruktúra tried úložiska a ich vlastnosti budú umiestnené v slovníku vo formáte JSON.

Nahráme šablónu na server Zabbix, uistíme sa, že monitorovací server má prístup k úložisku cez WEB protokol (TCP / 5989), umiestnime konfiguračné súbory, detekčné a monitorovacie skripty na monitorovací server. Ďalej pridajte skripty do plánovača. Výsledkom je: objavujeme úložné objekty (polia, fyzické a virtuálne disky, kryty a oveľa viac), odovzdávame ich objavom Zabbix, čítame stav ich parametrov, čítame štatistiku výkonu (počítadlá výkonu), to všetko prenášame do príslušných Zabbix Položky našej šablóny.

Šablóna Zabbix, python skripty, štruktúra tried úložiska a ich vlastnosti, ako aj príklady konfiguračných súborov, môžu byť nájsť tu.

Zdroj: hab.com

Pridať komentár