Monitorování úložiště IBM Storwize pomocí Zabbix

V tomto článku si povíme něco o monitorování úložných systémů IBM Storwize a dalších úložných systémů, které podporují protokoly CIM/WBEM. Potřeba takového sledování je z rovnice vynechána, budeme to považovat za axiom. Jako monitorovací systém použijeme Zabbix.

V nejnovějších verzích Zabbixu se společnost začala mnohem více věnovat šablonám – začaly se objevovat šablony pro monitorovací služby, DBMS, hardware serverů (IMM/iBMC) přes IPMI. Monitorování úložného systému je stále mimo šablony po vybalení, takže pro integraci informací o stavu a výkonu úložných komponent do Zabbixu musíte použít vlastní šablony. Upozorňuji na jednu z těchto šablon.

Nejprve trochu teorie.

Pro přístup ke stavu a statistikám úložných systémů IBM Storwize můžete použít:

  1. protokoly CIM/WBEM;
  2. RESTful API (podporováno v IBM Storwize počínaje verzí softwaru 8.1.3);
  3. SNMP pasti (omezená sada pastí, žádné statistiky);
  4. Připojte se přes SSH a poté vzdáleně vhodné pro poklidné bash skriptování.

Zájemci se mohou dozvědět více o různých metodách monitorování v příslušných částech dokumentace dodavatele a také v dokumentu Skriptování IBM Spectrum Virtualize.

Využijeme protokoly CIM/WBEM, které nám umožňují získat provozní parametry úložného systému bez výrazných softwarových změn pro různé úložné systémy. Protokoly CIM/WBEM fungují v souladu s Specifikace Storage Management Initiative (SMI-S). Storage Management Initiative – Specifikace je založena na otevřených standardech CIM (Common Information Model) и WBEM (Web-Based Enterprise Management), odhodlaný Pracovní skupina pro distribuované řízení.

WBEM běží nad protokolem HTTP. Prostřednictvím WBEM můžete pracovat nejen s úložnými systémy, ale také s HBA, přepínači a páskovými knihovnami.

Podle Architektura SMI и Určete infrastrukturu, hlavní součástí implementace SMI je server WBEM, který zpracovává požadavky CIM-XML od klientů WBEM (v našem případě z monitorovacích skriptů):

Monitorování úložiště IBM Storwize pomocí Zabbix

CIM je objektově orientovaný model založený na Unified Modeling Language (UML).
Spravované prvky jsou definovány jako třídy CIM, které mají vlastnosti a metody k reprezentaci spravovaných dat a funkcí.

Podle www.snia.org/pywbem, pro přístup k úložným systémům přes CIM/WBEM můžete použít PyWBEM - open source knihovnu napsanou v Pythonu, která poskytuje vývojářům a systémovým administrátorům implementaci protokolu CIM pro přístup k CIM objektům a provádění různých operací se serverem WBEM pracujícím v v souladu se specifikacemi SMI-S nebo jinými specifikacemi CIM.

Pro připojení k serveru WBEM používáme konstruktor třídy WBEMConnection:

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

Toto je virtuální připojení, protože CIM-XML/WBEM běží nad HTTP, ke skutečnému připojení dochází, když jsou volány metody na instanci třídy WBEMConnection. V souladu s IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (Příklad C-8, strana 412) použijeme „root/ibm“ jako jmenný prostor CIM pro úložný systém IBM Storwize.

Vezměte prosím na vědomí, že pro shromažďování statistik prostřednictvím protokolu CIM-XML/WBEM musíte uživatele zařadit do příslušné skupiny zabezpečení. V opačném případě bude při provádění dotazů WBEM výstup atributů instance třídy prázdný.

Pro přístup ke statistikám úložiště uživatel, pod kterým je konstruktor volán WBEMConnection(), musí mít alespoň RestrictedAdmin (dostupné pro code_level > 7.8.0) nebo administrátorská práva (nedoporučujeme z bezpečnostních důvodů).

Připojíme se k úložnému systému přes SSH a podíváme se na čísla skupin:

> 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    

Přidejte uživatele zabbix do požadované skupiny:

> chuser -usergrp 5 zabbix

Kromě toho musíte v souladu s IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (str. 415) povolit sběr statistik v úložném systému. Shromažďování statistik každou minutu:

> startstats -interval 1 

Zkontrolujeme:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Chcete-li získat všechny existující třídy úložiště, musíte použít metodu EnumerateClassNames().

Příklad:

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

Metoda se používá k získání hodnot parametrů úložného systému EnumerateInstances() třída WBEMConnection, která vrací seznam instancí CIMInstance().

Pří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))

U některých tříd, které obsahují velký počet instancí, jako je IBMTSSVC_StorageVolume, může být úplný dotaz na všechny instance poměrně pomalý. Dokáže generovat velké objemy dat, která musí být připravena úložným systémem, přenesena po síti a zpracována skriptem. Pro takový případ existuje metoda ExecQuery(), což nám umožňuje získat pouze vlastnosti instance třídy, které nás zajímají. Tato metoda zahrnuje použití dotazovacího jazyka podobného SQL, buď CIM Query Language (DMTF:CQL) nebo WBEM Query Language (WQL), k dotazování objektů úložiště CIM:

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

Chcete-li zjistit, které třídy potřebujeme získat parametry úložných objektů, přečtěte si například dokumentaci Jak se systémové koncepty mapují na koncepty CIM.

Abychom tedy získali parametry (ne čítače výkonu) fyzických disků (Disk Drives), budeme dotazovat třídu IBMTSSVC_DiskDrive, abychom získali parametry svazků - Třída IBMTSSVC_StorageVolume, abychom získali parametry pole - Třída IBMTSSVC_Array, abychom získali parametry MDisk - Třída IBMTSSVC_BackendVolume atd.

Pro výkon si můžete přečíst Funkční diagramy agenta Common Information Model (konkrétně - Blokovat podprofil výkonu serveru) a IBM System Storage SAN Volume Controller a Storwize V7000 Best Practices and Performance Guidelines (Příklad C-11, strana 415).

Chcete-li získat statistiku úložiště pro svazky, musíte zadat IBMTSSVC_StorageVolumeStatistics jako hodnotu parametru ClassName. Vlastnosti třídy IBMTSSVC_StorageVolumeStatistics potřebné pro shromažďování statistik lze zobrazit v Statistika uzlu.

Pro analýzu výkonu můžete také použít třídy IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Pro záznam dat do monitorovacího systému použijeme mechanismus pasti zabbix, implementovaný v pythonu v modulu py-zabbix. Strukturu tříd úložných systémů a jejich vlastnosti umístíme do slovníku ve formátu JSON.

Nahrajeme šablonu na server Zabbix, ujistíme se, že monitorovací server má přístup k úložnému systému prostřednictvím WEB protokolu (TCP/5989), a na monitorovací server umístíme konfigurační soubory, detekční a monitorovací skripty. Dále přidejte spuštění skriptu do plánovače. Výsledkem je: objevíme objekty úložiště (pole, fyzické a virtuální disky, skříně a mnoho dalšího), přeneseme je do objevů Zabbix, čteme stav jejich parametrů, čteme statistiky výkonu (počítadla výkonu), to vše přenášíme do odpovídajícího Zabbixu. Položky naší šablony.

Šablona Zabbix, python skripty, struktura tříd úložiště a jejich vlastnosti, stejně jako příklady konfiguračních souborů, můžete najdete zde.

Zdroj: www.habr.com

Přidat komentář