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:
protokoli CIM/WBEM;
RESTful API (podpira IBM Storwize od različice programske opreme 8.1.3);
Zainteresirani lahko izvedo več o različnih metodah spremljanja v ustreznih razdelkih dokumentacije prodajalca, pa tudi v dokumentu Skriptiranje IBM Spectrum Virtualize.
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):
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:
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)
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.
Č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.