Spremljanje shrambe IBM Storwize z Zabbixom

V tem članku bomo nekaj govorili o spremljanju sistemov za shranjevanje IBM Storwize in drugih sistemov za shranjevanje, ki podpirajo protokole CIM / WBEM. Potreba po takšnem spremljanju je izpuščena iz oklepaja, to bomo obravnavali kot aksiom. Kot nadzorni sistem bomo uporabili Zabbix.

V zadnjih različicah Zabbixa je podjetje začelo posvečati veliko več pozornosti predlogam - predloge so se začele pojavljati za storitve spremljanja, DBMS, strojno opremo strežnikov (IMM / iBMC) prek IPMI. Nadzor shranjevanja še vedno ni na voljo, zato morate za integracijo informacij o statusu in zmogljivosti komponent shranjevanja v Zabbix uporabiti predloge po meri. Predstavljam vam eno od teh predlog.

Prvič, malo teorije.

Za dostop do statusa in statistike pomnilnika IBM Storwize lahko uporabite:

  1. protokoli CIM/WBEM;
  2. RESTful API (podpira IBM Storwize od različice programske opreme 8.1.3);
  3. Pasti SNMP (omejen nabor pasti, brez statistike);
  4. SSH povezava, ki ji sledi oddaljena povezava primeren za lagodno skriptiranje bash.

Zainteresirani lahko izvedo več o različnih metodah spremljanja v ustreznih razdelkih dokumentacije prodajalca, pa tudi v dokumentu Skriptiranje IBM Spectrum Virtualize.

Uporabljali bomo protokole CIM / WBEM, ki nam omogočajo pridobivanje parametrov pomnilniškega sistema brez bistvenih sprememb v programski opremi za različne pomnilniške sisteme. Protokoli CIM/WBEM delujejo v skladu s Specifikacija pobude za upravljanje shranjevanja (SMI-S). Storage Management Initiative – Specifikacija temelji na odprtih standardih CIM (skupni informacijski model) и WBEM (spletno upravljanje podjetij)definiran Delovna skupina za porazdeljeno upravljanje.

WBEM deluje poleg protokola HTTP. Prek WBEM lahko delate ne samo s sistemi za shranjevanje, ampak tudi s HBA, stikali in tračnimi knjižnicami.

Glede na Arhitektura SMI и Določite infrastrukturo, je glavna komponenta implementacije SMI strežnik WBEM, ki obdeluje zahteve CIM-XML odjemalcev WBEM (v našem primeru iz nadzornih skriptov):

Spremljanje shrambe IBM Storwize z Zabbixom

CIM je objektno usmerjen model, ki temelji na poenotenem modelnem jeziku (UML).
Upravljane postavke so definirane kot razredi CIM, ki imajo lastnosti in metode za predstavitev upravljanih podatkov in funkcionalnosti.

Glede na www.snia.org/pywbem, za dostop do shranjevanja prek CIM / WBEM lahko uporabite PyWBEM, odprtokodno knjižnico, napisano v Pythonu, ki razvijalcem in sistemskim skrbnikom omogoča implementacijo protokola CIM za dostop do objektov CIM in izvajanje različnih operacij s strežnikom WBEM, ki deluje v skladu s SMI -S ali druge specifikacije CIM.

Za povezavo s strežnikom WBEM uporabite konstruktor razreda WBEMConnection:

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

To je navidezna povezava, ker se CIM-XML/WBEM izvaja prek HTTP, dejanska povezava se pojavi, ko se na primerku razreda WBEMConnection kličejo metode. V skladu z IBM System Storage SAN Volume Controller in Storwize V7000 Best Practices and Performance Guidelines (Primer C-8, str. 412) bomo uporabili »root/ibm« kot imenski prostor CIM za shranjevanje IBM Storwize.

Upoštevajte, da morate za zbiranje statističnih podatkov o protokolu CIM-XML/WBEM uporabnika vključiti v ustrezno varnostno skupino. V nasprotnem primeru bo pri izvajanju poizvedb WBEM izhod atributov primerka razreda prazen.

Za dostop do statističnih podatkov o shranjevanju se pokliče uporabnik, pod katerim je konstruktor WBEMConnection(), mora imeti vsaj RestrictedAdmin (na voljo za code_level > 7.8.0) ali Administrator (ni priporočljivo iz varnostnih razlogov).

S sistemom za shranjevanje se povežemo prek SSH in pogledamo š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    

Dodajte uporabnika zabbix v želeno skupino:

> chuser -usergrp 5 zabbix

Poleg tega mora biti v skladu z IBM System Storage SAN Volume Controller in Storwize V7000 Best Practices and Performance Guidelines (str. 415) omogočeno zbiranje statističnih podatkov o pomnilniku. Torej, za zbiranje statističnih podatkov vsako minuto:

> startstats -interval 1 

Preverjamo:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Če želite pridobiti vse obstoječe razrede shranjevanja, morate uporabiti metodo EnumerateClassNames().

Primer:

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

Za pridobitev vrednosti parametrov sistema za shranjevanje, metoda EnumerateInstances() Razred WBEMConnection vrne seznam primerkov 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, je lahko popolna poizvedba vseh primerkov precej počasna. Ustvari lahko velike količine podatkov, ki jih mora sistem za shranjevanje pripraviti, prenesti po omrežju in obdelati s skriptom. Za tak primer obstaja metoda ExecQuery(), ki vam omogoča, da pridobite samo tiste lastnosti primerka razreda, ki nas zanimajo. Ta metoda vključuje uporabo poizvedovalnega jezika, podobnega SQL, bodisi poizvedovalnega jezika CIM (DMTF:CQL) ali poizvedovalnega jezika WBEM (WQL), za poizvedovanje po objektih za shranjevanje CIM:

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

Da ugotovimo, katere razrede potrebujemo za pridobitev parametrov pomnilniških objektov, preberemo dokumentacijo npr Kako se sistemski koncepti preslikajo v koncepte CIM.

Za pridobitev parametrov (ne števcev zmogljivosti) fizičnih diskov (diskovnih pogonov) bomo poizvedovali po razredu IBMTSSVC_DiskDrive, za pridobitev parametrov nosilcev - razred IBMTSSVC_StorageVolume, za pridobitev parametrov polja - razred IBMTSSVC_Array, za pridobitev parametrov MDisks - razred IBMTSSVC_BackendVolume itd.

Lahko preberete o uspešnosti Funkcionalni diagrami agenta skupnega informacijskega modela (konkretno - Blokiraj podprofil zmogljivosti strežnika) ter IBM System Storage SAN Volume Controller in Storwize V7000 Najboljše prakse in smernice za delovanje (primer C-11, stran 415).

Če želite pridobiti statistične podatke o pomnilniku za količine, morate podati IBMTSSVC_StorageVolumeStatistics kot vrednost parametra ClassName. Lastnosti razreda IBMTSSVC_StorageVolumeStatistics, potrebne za zbiranje statističnih podatkov, najdete v Statistika vozlišča.

Za analizo zmogljivosti lahko uporabite tudi razrede IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Za zapisovanje podatkov v nadzorni sistem bomo uporabili mehanizem pasti zabbix, implementiran v python v modulu py-zabbix. Struktura pomnilniških razredov in njihove lastnosti bodo umeščene v slovar v formatu JSON.

Predlogo naložimo na Zabbix strežnik, poskrbimo, da ima nadzorni strežnik dostop do pomnilnika preko WEB protokola (TCP / 5989), postavimo konfiguracijske datoteke, skripte za zaznavanje in nadzor na nadzorni strežnik. Nato dodajte skripte v razporejevalnik. Kot rezultat: odkrijemo pomnilniške objekte (matrike, fizične in virtualne diske, ohišja in še veliko več), jih posredujemo odkritjem Zabbix, preberemo stanje njihovih parametrov, preberemo statistiko zmogljivosti (števci zmogljivosti), vse to posredujemo ustreznim Zabbix Elementi naše predloge.

Predlogo Zabbix, skripte python, strukturo pomnilniških razredov in njihove lastnosti ter primere konfiguracijskih datotek lahko najdete tukaj.

Vir: www.habr.com

Dodaj komentar