Nadzor shrambe podatkov IBM Storwize s pomočjo Zabbixa

V tem članku bomo nekoliko spregovorili o spremljanju shranjevanja podatkov IBM Storwize in drugih shranjevanj, ki podpirajo protokole CIM/WBEM. Potreba po takšnem spremljanju je ocenjeno kot samoumevna. Kot sistem spremljanja bomo uporabili Zabbix.

V zadnjih različicah Zabbixa je podjetje začelo posvečati veliko več pozornosti predlogam — pojavili so se predlogi za spremljanje storitev, DBMS, strojne opreme strežnikov (IMM/iBMC) prek IPMI. Spremljanje shranjevanja podatkov ostaja izven vsebinskih predlogov, zato je za integracijo informacij o statusu in zmogljivosti komponent shranjevanja v Zabbix potrebno uporabiti prilagojene predloge. Eden izmed takih predlog vam predstavljam.

Najprej malo teorije.

Za dostop do statusa in statistike shranjevanja podatkov IBM Storwize lahko uporabite:

  1. Protokole CIM/WBEM;
  2. RESTful API (v IBM Storwize se podpira od različice programske opreme 8.1.3);
  3. SNMP Traps (omejen nabor trapov, brez statistike);
  4. Povezovanje prek SSH z nadaljnjim oddaljenim primerna za počasno bash skriptiranje.

Zainteresirani se lahko podrobneje seznanijo z različnimi metodami spremljanja v ustreznih razdelkih proizvajalčeve dokumentacije, pa tudi v dokumentu IBM Spectrum Virtualize scripting.

Uporabljali bomo protokole CIM/WBEM, ki omogočajo pridobivanje parametrov delovanja shranjevanja brez pomembnih sprememb programske opreme za različna shranjevanja. Protokoli CIM/WBEM delujejo v skladu s Storage Management Initiative Specification (SMI-S). Storage Management Initiative – Specifikacija temelji na odprtih standardih CIM (Common Information Model) in WBEM (Web-Based Enterprise Management), ki jih opredeljujejo Distributed Management Task Force.

WBEM deluje preko protokola HTTP. Prek WBEM je možno delati ne samo s shranjevanjem, temveč tudi s HBA, stikali in knjižnicami trakov.

Po SMI Architecture in Determine Infrastructure, osnovna komponenta implementacije SMI je WBEM strežnik, ki obdeluje CIM-XML zahteve od WBEM odjemalcev (v našem primeru — od skript za spremljanje):

Nadzor shrambe podatkov IBM Storwize s pomočjo Zabbixa

CIM je objektno usmerjen model, ki temelji na Unified Modeling Language (UML).
Upravljani elementi so definirani v obliki CIM razredov, ki imajo lastnosti in metode za predstavitev upravljanih podatkov in funkcij.

Po www.snia.org/pywbem, za dostop do SAN shranjevanja preko CIM/WBEM lahko uporabite PyWBEM — odprtokodno knjižnico, napisano v Pythonu, ki razvijalcem in sistemskim administratorjem omogoča izvajanje protokola CIM za dostop do CIM-objektov in izvajanje različnih operacij s WBEM-strežnikom, ki deluje v skladu s SMI-S ali drugimi CIM-specifikacijami.

Za povezavo z WBEM-strežnikom uporabimo konstruktor razreda WBEMConnection:

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

To je virtualna povezava, saj CIM-XML/WBEM deluje nad HTTP, dejanska povezava pa se zgodi ob klicu metod za instanco razreda WBEMConnection. V skladu z IBM System Storage SAN Volume Controller in Storwize V7000 najboljšimi praksami in smernicami za zmogljivost (primer C-8, str. 412), bomo za CIM namespaces za SAN shranjevanje IBM Storwize uporabili „root/ibm“.

Upoštevajte, da je za zbiranje statistike prek protokola CIM-XML/WBEM potrebno vključiti uporabnika v ustrezno varnostno skupino. V nasprotnem primeru bo pri izvajanju WBEM poizvedb izhod atributov instance razreda prazen.

Za dostop do statistike SAN shranjevanja mora imeti uporabnik, ki izvaja klic konstruktorja WBEMConnection(), pravice vsaj RestrictedAdmin (na voljo za code_level > 7.8.0) ali Administrator (ne priporočam iz varnostnih razlogov).

Povežemo se s SAN shranjevanjem preko SSH in preverimo številke 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    

Dodamo uporabnika zabbix v ustrezno skupino:

> chuser -usergrp 5 zabbix

Poleg tega, v skladu z IBM System Storage SAN Volume Controller in Storwize V7000 najboljšimi praksami in smernicami za zmogljivost (str. 415) je potrebno omogočiti zbiranje statistike na SAN shranjevanju. Tako za zbiranje statistike vsako minuto:

> startstats -interval 1 

Preverimo:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Za pridobitev vseh obstoječih razredov SAN shranjevanja je potrebno uporabiti metodo EnumerateClassNames().

Primer:

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

Za pridobitev vrednosti parametrov SAN shranjevanja je namenjena metoda EnumerateInstances() razreda WBEMConnection, ki vrne seznam instanc CIMInstance().

Primer:

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

Za nekatere razrede, ki vsebujejo veliko število primerkov, kot je IBMTSSVC_StorageVolume, lahko popoln poizvedba vseh primerkov traja kar dolgo. To lahko povzroči velike količine podatkov, ki jih je treba pripraviti za shranjevanje podatkov, prenesti po omrežju in obdelati s skripto. V takšnih primerih imamo na voljo metodo ExecQuery(), ki omogoča pridobitev le lastnosti primerka razreda, ki nas zanimajo. Ta metoda predvideva uporabo jezika poizvedb, podobnega SQL — bodisi CIM Query Language (DMTF:CQL) bodisi WBEM Query Language (WQL), za poizvedbo CIM-objektov shranjevanja:

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

Da bi določili, kateri razredi so potrebni za pridobivanje parametrov objektov shranjevanja, preberemo dokumentacijo, na primer Kako se koncepti sistema preslikajo na CIM koncepte.

Tako bomo za pridobitev parametrov (ne števcov uspešnosti) fizičnih diskov (Disk Drives) povpraševali po razredu IBMTSSVC_DiskDrive, za pridobitev parametrov volumenov — po razredu IBMTSSVC_StorageVolume, za pridobitev parametrov nizov — po razredu IBMTSSVC_Array, za pridobitev parametrov MDiskov — po razredu IBMTSSVC_BackendVolume itd.

O uspešnosti lahko preberete Funkcionalne sheme agenta skupnega informacijskega modela (konkretno — Podprofil uspešnosti blokovnega strežnika) in IBM System Storage SAN Volume Controller in best practices ter priporočila za uspešnost za Storwize V7000 (Primer C-11, str. 415).

Za pridobitev statistike shranjevanja za volumn, je treba v vrednost parametra ClassName navesti IBMTSSVC_StorageVolumeStatistics. Potrebne lastnosti razreda IBMTSSVC_StorageVolumeStatistics za zbiranje statistike lahko vidite v Statistika vozlišča.

Prav tako lahko za analizo uspešnosti uporabimo razrede IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Za zapis podatkov v sistem za spremljanje bomo uporabili mehanizem zabbix traps, uresničeni v python modulu py-zabbix. Strukturo razredov shranjevanja in njihovih lastnosti bomo uredili v slovarju v formatu JSON.

Naložimo predlogo na Zabbix strežnik, preverimo, da je dostop do SAN po protokolu WEB (TCP/5989) omogočen s strani nadzornega strežnika, smestimo konfiguracijske datoteke ter skripte za odkrivanje in nadzor na nadzornem strežniku. Nato dodamo zagon skriptov v načrtovalnik. Na koncu: odkrijemo objekte SAN (nizke, fizične in virtualne diske, ohišja in še mnogo drugega), prenesemo jih v Zabbix odkrites, preberemo stanje njihovih parametrov, preberemo statistiko zmogljivosti (perfomance counters) in vse to prenesemo v ustrezne Zabbix elemente naše predloge.

Predloga Zabbix, python skripti, struktura razredov SAN in njihovih lastnosti, ter primeri konfiguracijskih datotek so na voljo najdete tukaj.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster